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

[18/24] Some refinements arounf pojogen

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/24a031b7/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/MappedEntityType.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/MappedEntityType.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/MappedEntityType.java
index d19c45d..de48841 100644
--- a/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/MappedEntityType.java
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/MappedEntityType.java
@@ -20,16 +20,21 @@
 package org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types;
 
 import org.apache.olingo.client.api.http.HttpMethod;
+import org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty;
+import org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty;
 import org.apache.olingo.ext.proxy.api.annotations.Namespace;
 import org.apache.olingo.ext.proxy.api.annotations.EntityType;
+import org.apache.olingo.ext.proxy.api.annotations.EntitySet;
 import org.apache.olingo.ext.proxy.api.annotations.Key;
 import org.apache.olingo.ext.proxy.api.annotations.KeyRef;
 import org.apache.olingo.ext.proxy.api.annotations.NavigationProperty;
 import org.apache.olingo.ext.proxy.api.annotations.Property;
 import org.apache.olingo.ext.proxy.api.annotations.Operation;
 import org.apache.olingo.ext.proxy.api.annotations.Parameter;
+import org.apache.olingo.ext.proxy.api.Annotatable;
 import org.apache.olingo.ext.proxy.api.AbstractOpenType;
 import org.apache.olingo.ext.proxy.api.OperationType;
+import org.apache.olingo.ext.proxy.api.AbstractEntitySet;
 import org.apache.olingo.commons.api.edm.constants.EdmContentKind;
 import org.apache.olingo.client.api.edm.ConcurrencyMode;
 import org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.*;
@@ -43,26 +48,19 @@ import org.apache.olingo.commons.api.edm.geo.MultiPoint;
 import org.apache.olingo.commons.api.edm.geo.MultiPolygon;
 import org.apache.olingo.commons.api.edm.geo.Point;
 import org.apache.olingo.commons.api.edm.geo.Polygon;
-import java.math.BigDecimal;
-import java.net.URI;
-import java.util.UUID;
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.Calendar;
-import javax.xml.datatype.Duration;
 
 
-@Namespace("Microsoft.Test.OData.Services.AstoriaDefaultService")
-@EntityType(name = "MappedEntityType",
+@org.apache.olingo.ext.proxy.api.annotations.Namespace("Microsoft.Test.OData.Services.AstoriaDefaultService")
+@org.apache.olingo.ext.proxy.api.annotations.EntityType(name = "MappedEntityType",
         openType = false,
         hasStream = false,
         isAbstract = false)
 public interface MappedEntityType 
-  extends Serializable {
+  extends Annotatable,java.io.Serializable {
 
     
     @Key
-    @Property(name = "Id", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Id", 
                 type = "Edm.Int32", 
                 nullable = false,
                 defaultValue = "",
@@ -80,12 +78,12 @@ public interface MappedEntityType
                 fcNSPrefix = "",
                 fcNSURI = "",
                 fcKeepInContent = false)
-    Integer getId();
+    java.lang.Integer getId();
 
-    void setId(final Integer _id);    
+    void setId(java.lang.Integer _id);    
     
     
-    @Property(name = "Href", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Href", 
                 type = "Edm.String", 
                 nullable = true,
                 defaultValue = "",
@@ -103,12 +101,12 @@ public interface MappedEntityType
                 fcNSPrefix = "",
                 fcNSURI = "",
                 fcKeepInContent = false)
-    String getHref();
+    java.lang.String getHref();
 
-    void setHref(final String _href);    
+    void setHref(java.lang.String _href);    
     
     
-    @Property(name = "Title", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Title", 
                 type = "Edm.String", 
                 nullable = true,
                 defaultValue = "",
@@ -126,12 +124,12 @@ public interface MappedEntityType
                 fcNSPrefix = "",
                 fcNSURI = "",
                 fcKeepInContent = false)
-    String getTitle();
+    java.lang.String getTitle();
 
-    void setTitle(final String _title);    
+    void setTitle(java.lang.String _title);    
     
     
-    @Property(name = "HrefLang", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "HrefLang", 
                 type = "Edm.String", 
                 nullable = true,
                 defaultValue = "",
@@ -149,12 +147,12 @@ public interface MappedEntityType
                 fcNSPrefix = "",
                 fcNSURI = "",
                 fcKeepInContent = false)
-    String getHrefLang();
+    java.lang.String getHrefLang();
 
-    void setHrefLang(final String _hrefLang);    
+    void setHrefLang(java.lang.String _hrefLang);    
     
     
-    @Property(name = "Type", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Type", 
                 type = "Edm.String", 
                 nullable = true,
                 defaultValue = "",
@@ -172,12 +170,12 @@ public interface MappedEntityType
                 fcNSPrefix = "",
                 fcNSURI = "",
                 fcKeepInContent = false)
-    String getType();
+    java.lang.String getType();
 
-    void setType(final String _type);    
+    void setType(java.lang.String _type);    
     
     
-    @Property(name = "Length", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Length", 
                 type = "Edm.Int32", 
                 nullable = false,
                 defaultValue = "",
@@ -195,12 +193,12 @@ public interface MappedEntityType
                 fcNSPrefix = "",
                 fcNSURI = "",
                 fcKeepInContent = false)
-    Integer getLength();
+    java.lang.Integer getLength();
 
-    void setLength(final Integer _length);    
+    void setLength(java.lang.Integer _length);    
     
     
-    @Property(name = "BagOfPrimitiveToLinks", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "BagOfPrimitiveToLinks", 
                 type = "Edm.String", 
                 nullable = false,
                 defaultValue = "",
@@ -218,12 +216,12 @@ public interface MappedEntityType
                 fcNSPrefix = "",
                 fcNSURI = "",
                 fcKeepInContent = false)
-    Collection<String> getBagOfPrimitiveToLinks();
+    java.util.Collection<java.lang.String> getBagOfPrimitiveToLinks();
 
-    void setBagOfPrimitiveToLinks(final Collection<String> _bagOfPrimitiveToLinks);    
+    void setBagOfPrimitiveToLinks(java.util.Collection<java.lang.String> _bagOfPrimitiveToLinks);    
     
     
-    @Property(name = "Logo", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Logo", 
                 type = "Edm.Binary", 
                 nullable = true,
                 defaultValue = "",
@@ -243,10 +241,10 @@ public interface MappedEntityType
                 fcKeepInContent = false)
     byte[] getLogo();
 
-    void setLogo(final byte[] _logo);    
+    void setLogo(byte[] _logo);    
     
     
-    @Property(name = "BagOfDecimals", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "BagOfDecimals", 
                 type = "Edm.Decimal", 
                 nullable = false,
                 defaultValue = "",
@@ -264,12 +262,12 @@ public interface MappedEntityType
                 fcNSPrefix = "",
                 fcNSURI = "",
                 fcKeepInContent = false)
-    Collection<BigDecimal> getBagOfDecimals();
+    java.util.Collection<java.math.BigDecimal> getBagOfDecimals();
 
-    void setBagOfDecimals(final Collection<BigDecimal> _bagOfDecimals);    
+    void setBagOfDecimals(java.util.Collection<java.math.BigDecimal> _bagOfDecimals);    
     
     
-    @Property(name = "BagOfDoubles", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "BagOfDoubles", 
                 type = "Edm.Double", 
                 nullable = false,
                 defaultValue = "",
@@ -287,12 +285,12 @@ public interface MappedEntityType
                 fcNSPrefix = "",
                 fcNSURI = "",
                 fcKeepInContent = false)
-    Collection<Double> getBagOfDoubles();
+    java.util.Collection<java.lang.Double> getBagOfDoubles();
 
-    void setBagOfDoubles(final Collection<Double> _bagOfDoubles);    
+    void setBagOfDoubles(java.util.Collection<java.lang.Double> _bagOfDoubles);    
     
     
-    @Property(name = "BagOfSingles", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "BagOfSingles", 
                 type = "Edm.Single", 
                 nullable = false,
                 defaultValue = "",
@@ -310,12 +308,12 @@ public interface MappedEntityType
                 fcNSPrefix = "",
                 fcNSURI = "",
                 fcKeepInContent = false)
-    Collection<Float> getBagOfSingles();
+    java.util.Collection<java.lang.Float> getBagOfSingles();
 
-    void setBagOfSingles(final Collection<Float> _bagOfSingles);    
+    void setBagOfSingles(java.util.Collection<java.lang.Float> _bagOfSingles);    
     
     
-    @Property(name = "BagOfBytes", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "BagOfBytes", 
                 type = "Edm.Byte", 
                 nullable = false,
                 defaultValue = "",
@@ -333,12 +331,12 @@ public interface MappedEntityType
                 fcNSPrefix = "",
                 fcNSURI = "",
                 fcKeepInContent = false)
-    Collection<Short> getBagOfBytes();
+    java.util.Collection<java.lang.Short> getBagOfBytes();
 
-    void setBagOfBytes(final Collection<Short> _bagOfBytes);    
+    void setBagOfBytes(java.util.Collection<java.lang.Short> _bagOfBytes);    
     
     
-    @Property(name = "BagOfInt16s", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "BagOfInt16s", 
                 type = "Edm.Int16", 
                 nullable = false,
                 defaultValue = "",
@@ -356,12 +354,12 @@ public interface MappedEntityType
                 fcNSPrefix = "",
                 fcNSURI = "",
                 fcKeepInContent = false)
-    Collection<Short> getBagOfInt16s();
+    java.util.Collection<java.lang.Short> getBagOfInt16s();
 
-    void setBagOfInt16s(final Collection<Short> _bagOfInt16s);    
+    void setBagOfInt16s(java.util.Collection<java.lang.Short> _bagOfInt16s);    
     
     
-    @Property(name = "BagOfInt32s", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "BagOfInt32s", 
                 type = "Edm.Int32", 
                 nullable = false,
                 defaultValue = "",
@@ -379,12 +377,12 @@ public interface MappedEntityType
                 fcNSPrefix = "",
                 fcNSURI = "",
                 fcKeepInContent = false)
-    Collection<Integer> getBagOfInt32s();
+    java.util.Collection<java.lang.Integer> getBagOfInt32s();
 
-    void setBagOfInt32s(final Collection<Integer> _bagOfInt32s);    
+    void setBagOfInt32s(java.util.Collection<java.lang.Integer> _bagOfInt32s);    
     
     
-    @Property(name = "BagOfInt64s", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "BagOfInt64s", 
                 type = "Edm.Int64", 
                 nullable = false,
                 defaultValue = "",
@@ -402,12 +400,12 @@ public interface MappedEntityType
                 fcNSPrefix = "",
                 fcNSURI = "",
                 fcKeepInContent = false)
-    Collection<Long> getBagOfInt64s();
+    java.util.Collection<java.lang.Long> getBagOfInt64s();
 
-    void setBagOfInt64s(final Collection<Long> _bagOfInt64s);    
+    void setBagOfInt64s(java.util.Collection<java.lang.Long> _bagOfInt64s);    
     
     
-    @Property(name = "BagOfGuids", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "BagOfGuids", 
                 type = "Edm.Guid", 
                 nullable = false,
                 defaultValue = "",
@@ -425,12 +423,12 @@ public interface MappedEntityType
                 fcNSPrefix = "",
                 fcNSURI = "",
                 fcKeepInContent = false)
-    Collection<UUID> getBagOfGuids();
+    java.util.Collection<java.util.UUID> getBagOfGuids();
 
-    void setBagOfGuids(final Collection<UUID> _bagOfGuids);    
+    void setBagOfGuids(java.util.Collection<java.util.UUID> _bagOfGuids);    
     
     
-    @Property(name = "BagOfDateTime", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "BagOfDateTime", 
                 type = "Edm.DateTime", 
                 nullable = false,
                 defaultValue = "",
@@ -448,12 +446,12 @@ public interface MappedEntityType
                 fcNSPrefix = "",
                 fcNSURI = "",
                 fcKeepInContent = false)
-    Collection<Calendar> getBagOfDateTime();
+    java.util.Collection<java.util.Calendar> getBagOfDateTime();
 
-    void setBagOfDateTime(final Collection<Calendar> _bagOfDateTime);    
+    void setBagOfDateTime(java.util.Collection<java.util.Calendar> _bagOfDateTime);    
     
     
-    @Property(name = "BagOfComplexToCategories", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "BagOfComplexToCategories", 
                 type = "Microsoft.Test.OData.Services.AstoriaDefaultService.ComplexToCategory", 
                 nullable = false,
                 defaultValue = "",
@@ -471,12 +469,12 @@ public interface MappedEntityType
                 fcNSPrefix = "",
                 fcNSURI = "",
                 fcKeepInContent = false)
-    Collection<org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.ComplexToCategory> getBagOfComplexToCategories();
+    java.util.Collection<org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.ComplexToCategory> getBagOfComplexToCategories();
 
-    void setBagOfComplexToCategories(final Collection<org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.ComplexToCategory> _bagOfComplexToCategories);    
+    void setBagOfComplexToCategories(java.util.Collection<org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.ComplexToCategory> _bagOfComplexToCategories);    
         
     
-    @Property(name = "ComplexPhone", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "ComplexPhone", 
                 type = "Microsoft.Test.OData.Services.AstoriaDefaultService.Phone", 
                 nullable = true,
                 defaultValue = "",
@@ -496,10 +494,10 @@ public interface MappedEntityType
                 fcKeepInContent = false)
     org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.Phone getComplexPhone();
 
-    void setComplexPhone(final org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.Phone _complexPhone);    
+    void setComplexPhone(org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.Phone _complexPhone);    
         
     
-    @Property(name = "ComplexContactDetails", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "ComplexContactDetails", 
                 type = "Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails", 
                 nullable = true,
                 defaultValue = "",
@@ -519,26 +517,114 @@ public interface MappedEntityType
                 fcKeepInContent = false)
     org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.ContactDetails getComplexContactDetails();
 
-    void setComplexContactDetails(final org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.ContactDetails _complexContactDetails);    
+    void setComplexContactDetails(org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.ContactDetails _complexContactDetails);    
         
     
 
 
 
-        ComplexFactory factory();
+    ComplexFactory factory();
 
     interface ComplexFactory {
-             @Property(name = "BagOfComplexToCategories",
+         @org.apache.olingo.ext.proxy.api.annotations.Property(name = "BagOfComplexToCategories",
                    type = "Microsoft.Test.OData.Services.AstoriaDefaultService.ComplexToCategory")
          org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.ComplexToCategory newBagOfComplexToCategories();
 
-             @Property(name = "ComplexPhone",
+         @org.apache.olingo.ext.proxy.api.annotations.Property(name = "ComplexPhone",
                    type = "Microsoft.Test.OData.Services.AstoriaDefaultService.Phone")
          org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.Phone newComplexPhone();
 
-             @Property(name = "ComplexContactDetails",
+         @org.apache.olingo.ext.proxy.api.annotations.Property(name = "ComplexContactDetails",
                    type = "Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails")
          org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.ContactDetails newComplexContactDetails();
 
-        }
+    }
+
+    Annotations annotations();
+
+    interface Annotations {
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Id",
+                   type = "Edm.Int32")
+        Annotatable getIdAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Href",
+                   type = "Edm.String")
+        Annotatable getHrefAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Title",
+                   type = "Edm.String")
+        Annotatable getTitleAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "HrefLang",
+                   type = "Edm.String")
+        Annotatable getHrefLangAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Type",
+                   type = "Edm.String")
+        Annotatable getTypeAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Length",
+                   type = "Edm.Int32")
+        Annotatable getLengthAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "BagOfPrimitiveToLinks",
+                   type = "Edm.String")
+        Annotatable getBagOfPrimitiveToLinksAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Logo",
+                   type = "Edm.Binary")
+        Annotatable getLogoAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "BagOfDecimals",
+                   type = "Edm.Decimal")
+        Annotatable getBagOfDecimalsAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "BagOfDoubles",
+                   type = "Edm.Double")
+        Annotatable getBagOfDoublesAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "BagOfSingles",
+                   type = "Edm.Single")
+        Annotatable getBagOfSinglesAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "BagOfBytes",
+                   type = "Edm.Byte")
+        Annotatable getBagOfBytesAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "BagOfInt16s",
+                   type = "Edm.Int16")
+        Annotatable getBagOfInt16sAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "BagOfInt32s",
+                   type = "Edm.Int32")
+        Annotatable getBagOfInt32sAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "BagOfInt64s",
+                   type = "Edm.Int64")
+        Annotatable getBagOfInt64sAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "BagOfGuids",
+                   type = "Edm.Guid")
+        Annotatable getBagOfGuidsAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "BagOfDateTime",
+                   type = "Edm.DateTime")
+        Annotatable getBagOfDateTimeAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "BagOfComplexToCategories",
+                   type = "Microsoft.Test.OData.Services.AstoriaDefaultService.ComplexToCategory")
+        Annotatable getBagOfComplexToCategoriesAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "ComplexPhone",
+                   type = "Microsoft.Test.OData.Services.AstoriaDefaultService.Phone")
+        Annotatable getComplexPhoneAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "ComplexContactDetails",
+                   type = "Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails")
+        Annotatable getComplexContactDetailsAnnotations();
+
+
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/24a031b7/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/MappedEntityTypeCollection.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/MappedEntityTypeCollection.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/MappedEntityTypeCollection.java
index 6a3522a..0058d91 100644
--- a/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/MappedEntityTypeCollection.java
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/MappedEntityTypeCollection.java
@@ -21,6 +21,7 @@ package org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.se
 
 import org.apache.olingo.client.api.http.HttpMethod;
 import org.apache.olingo.ext.proxy.api.AbstractEntityCollection;
+import org.apache.olingo.ext.proxy.api.AbstractTerm;
 import org.apache.olingo.ext.proxy.api.OperationType;
 import org.apache.olingo.ext.proxy.api.annotations.Operation;
 import org.apache.olingo.ext.proxy.api.annotations.Parameter;
@@ -43,5 +44,9 @@ import java.util.Collection;
 import java.util.Calendar;
 import javax.xml.datatype.Duration;
 
-public interface MappedEntityTypeCollection extends AbstractEntityCollection<MappedEntityType> {
+public interface MappedEntityTypeCollection extends AbstractEntityCollection<org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.MappedEntityType> {
+
+  Object getAnnotation(Class<? extends AbstractTerm> term);
+
+  Collection<Class<? extends AbstractTerm>> getAnnotationTerms();
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/24a031b7/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/Message.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/Message.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/Message.java
index 95bcd03..a17fe06 100644
--- a/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/Message.java
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/Message.java
@@ -20,16 +20,21 @@
 package org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types;
 
 import org.apache.olingo.client.api.http.HttpMethod;
+import org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty;
+import org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty;
 import org.apache.olingo.ext.proxy.api.annotations.Namespace;
 import org.apache.olingo.ext.proxy.api.annotations.EntityType;
+import org.apache.olingo.ext.proxy.api.annotations.EntitySet;
 import org.apache.olingo.ext.proxy.api.annotations.Key;
 import org.apache.olingo.ext.proxy.api.annotations.KeyRef;
 import org.apache.olingo.ext.proxy.api.annotations.NavigationProperty;
 import org.apache.olingo.ext.proxy.api.annotations.Property;
 import org.apache.olingo.ext.proxy.api.annotations.Operation;
 import org.apache.olingo.ext.proxy.api.annotations.Parameter;
+import org.apache.olingo.ext.proxy.api.Annotatable;
 import org.apache.olingo.ext.proxy.api.AbstractOpenType;
 import org.apache.olingo.ext.proxy.api.OperationType;
+import org.apache.olingo.ext.proxy.api.AbstractEntitySet;
 import org.apache.olingo.commons.api.edm.constants.EdmContentKind;
 import org.apache.olingo.client.api.edm.ConcurrencyMode;
 import org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.*;
@@ -43,26 +48,19 @@ import org.apache.olingo.commons.api.edm.geo.MultiPoint;
 import org.apache.olingo.commons.api.edm.geo.MultiPolygon;
 import org.apache.olingo.commons.api.edm.geo.Point;
 import org.apache.olingo.commons.api.edm.geo.Polygon;
-import java.math.BigDecimal;
-import java.net.URI;
-import java.util.UUID;
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.Calendar;
-import javax.xml.datatype.Duration;
 
 @KeyRef(MessageKey.class)
-@Namespace("Microsoft.Test.OData.Services.AstoriaDefaultService")
-@EntityType(name = "Message",
+@org.apache.olingo.ext.proxy.api.annotations.Namespace("Microsoft.Test.OData.Services.AstoriaDefaultService")
+@org.apache.olingo.ext.proxy.api.annotations.EntityType(name = "Message",
         openType = false,
         hasStream = false,
         isAbstract = false)
 public interface Message 
-  extends Serializable {
+  extends Annotatable,java.io.Serializable {
 
         
     @Key
-    @Property(name = "MessageId", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "MessageId", 
                 type = "Edm.Int32", 
                 nullable = false,
                 defaultValue = "",
@@ -80,12 +78,12 @@ public interface Message
                 fcNSPrefix = "",
                 fcNSURI = "",
                 fcKeepInContent = false)
-    Integer getMessageId();
+    java.lang.Integer getMessageId();
 
-    void setMessageId(final Integer _messageId);    
+    void setMessageId(java.lang.Integer _messageId);    
     
     @Key
-    @Property(name = "FromUsername", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "FromUsername", 
                 type = "Edm.String", 
                 nullable = false,
                 defaultValue = "",
@@ -103,12 +101,12 @@ public interface Message
                 fcNSPrefix = "",
                 fcNSURI = "",
                 fcKeepInContent = false)
-    String getFromUsername();
+    java.lang.String getFromUsername();
 
-    void setFromUsername(final String _fromUsername);    
+    void setFromUsername(java.lang.String _fromUsername);    
     
     
-    @Property(name = "ToUsername", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "ToUsername", 
                 type = "Edm.String", 
                 nullable = true,
                 defaultValue = "",
@@ -126,12 +124,12 @@ public interface Message
                 fcNSPrefix = "",
                 fcNSURI = "",
                 fcKeepInContent = false)
-    String getToUsername();
+    java.lang.String getToUsername();
 
-    void setToUsername(final String _toUsername);    
+    void setToUsername(java.lang.String _toUsername);    
     
     
-    @Property(name = "Sent", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Sent", 
                 type = "Edm.DateTimeOffset", 
                 nullable = false,
                 defaultValue = "",
@@ -149,12 +147,12 @@ public interface Message
                 fcNSPrefix = "",
                 fcNSURI = "",
                 fcKeepInContent = false)
-    Calendar getSent();
+    java.util.Calendar getSent();
 
-    void setSent(final Calendar _sent);    
+    void setSent(java.util.Calendar _sent);    
     
     
-    @Property(name = "Subject", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Subject", 
                 type = "Edm.String", 
                 nullable = true,
                 defaultValue = "",
@@ -172,12 +170,12 @@ public interface Message
                 fcNSPrefix = "",
                 fcNSURI = "",
                 fcKeepInContent = false)
-    String getSubject();
+    java.lang.String getSubject();
 
-    void setSubject(final String _subject);    
+    void setSubject(java.lang.String _subject);    
     
     
-    @Property(name = "Body", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Body", 
                 type = "Edm.String", 
                 nullable = true,
                 defaultValue = "",
@@ -195,12 +193,12 @@ public interface Message
                 fcNSPrefix = "",
                 fcNSURI = "",
                 fcKeepInContent = false)
-    String getBody();
+    java.lang.String getBody();
 
-    void setBody(final String _body);    
+    void setBody(java.lang.String _body);    
     
     
-    @Property(name = "IsRead", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "IsRead", 
                 type = "Edm.Boolean", 
                 nullable = false,
                 defaultValue = "",
@@ -218,42 +216,94 @@ public interface Message
                 fcNSPrefix = "",
                 fcNSURI = "",
                 fcKeepInContent = false)
-    Boolean getIsRead();
+    java.lang.Boolean getIsRead();
 
-    void setIsRead(final Boolean _isRead);    
+    void setIsRead(java.lang.Boolean _isRead);    
     
     
 
-    @NavigationProperty(name = "Sender", 
+    @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "Sender", 
                 type = "Microsoft.Test.OData.Services.AstoriaDefaultService.Login", 
                 targetSchema = "Microsoft.Test.OData.Services.AstoriaDefaultService", 
                 targetContainer = "DefaultContainer", 
-                targetEntitySet = "Login")
+                targetEntitySet = "Login",
+                containsTarget = false)
     org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.Login getSender();
 
-    void setSender(final org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.Login _sender);
-
-
-    @NavigationProperty(name = "Recipient", 
+    void setSender(org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.Login _sender);
+    
+    @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "Recipient", 
                 type = "Microsoft.Test.OData.Services.AstoriaDefaultService.Login", 
                 targetSchema = "Microsoft.Test.OData.Services.AstoriaDefaultService", 
                 targetContainer = "DefaultContainer", 
-                targetEntitySet = "Login")
+                targetEntitySet = "Login",
+                containsTarget = false)
     org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.Login getRecipient();
 
-    void setRecipient(final org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.Login _recipient);
-
-
-    @NavigationProperty(name = "Attachments", 
+    void setRecipient(org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.Login _recipient);
+    
+    @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "Attachments", 
                 type = "Microsoft.Test.OData.Services.AstoriaDefaultService.MessageAttachment", 
                 targetSchema = "Microsoft.Test.OData.Services.AstoriaDefaultService", 
                 targetContainer = "DefaultContainer", 
-                targetEntitySet = "MessageAttachment")
+                targetEntitySet = "MessageAttachment",
+                containsTarget = false)
     org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.MessageAttachmentCollection getAttachments();
 
-    void setAttachments(final org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.MessageAttachmentCollection _attachments);
+    void setAttachments(org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.MessageAttachmentCollection _attachments);
+    
+
+
+    ComplexFactory factory();
+
+    interface ComplexFactory {
+    }
+
+    Annotations annotations();
+
+    interface Annotations {
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "MessageId",
+                   type = "Edm.Int32")
+        Annotatable getMessageIdAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "FromUsername",
+                   type = "Edm.String")
+        Annotatable getFromUsernameAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "ToUsername",
+                   type = "Edm.String")
+        Annotatable getToUsernameAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Sent",
+                   type = "Edm.DateTimeOffset")
+        Annotatable getSentAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Subject",
+                   type = "Edm.String")
+        Annotatable getSubjectAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Body",
+                   type = "Edm.String")
+        Annotatable getBodyAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "IsRead",
+                   type = "Edm.Boolean")
+        Annotatable getIsReadAnnotations();
+
+
 
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty(name = "Sender", 
+                  type = "Microsoft.Test.OData.Services.AstoriaDefaultService.Login")
+        Annotatable getSenderAnnotations();
 
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty(name = "Recipient", 
+                  type = "Microsoft.Test.OData.Services.AstoriaDefaultService.Login")
+        Annotatable getRecipientAnnotations();
 
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty(name = "Attachments", 
+                  type = "Microsoft.Test.OData.Services.AstoriaDefaultService.MessageAttachment")
+        Annotatable getAttachmentsAnnotations();
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/24a031b7/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/MessageAttachment.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/MessageAttachment.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/MessageAttachment.java
index 2716de0..844cb1e 100644
--- a/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/MessageAttachment.java
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/MessageAttachment.java
@@ -20,16 +20,21 @@
 package org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types;
 
 import org.apache.olingo.client.api.http.HttpMethod;
+import org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty;
+import org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty;
 import org.apache.olingo.ext.proxy.api.annotations.Namespace;
 import org.apache.olingo.ext.proxy.api.annotations.EntityType;
+import org.apache.olingo.ext.proxy.api.annotations.EntitySet;
 import org.apache.olingo.ext.proxy.api.annotations.Key;
 import org.apache.olingo.ext.proxy.api.annotations.KeyRef;
 import org.apache.olingo.ext.proxy.api.annotations.NavigationProperty;
 import org.apache.olingo.ext.proxy.api.annotations.Property;
 import org.apache.olingo.ext.proxy.api.annotations.Operation;
 import org.apache.olingo.ext.proxy.api.annotations.Parameter;
+import org.apache.olingo.ext.proxy.api.Annotatable;
 import org.apache.olingo.ext.proxy.api.AbstractOpenType;
 import org.apache.olingo.ext.proxy.api.OperationType;
+import org.apache.olingo.ext.proxy.api.AbstractEntitySet;
 import org.apache.olingo.commons.api.edm.constants.EdmContentKind;
 import org.apache.olingo.client.api.edm.ConcurrencyMode;
 import org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.*;
@@ -43,26 +48,19 @@ import org.apache.olingo.commons.api.edm.geo.MultiPoint;
 import org.apache.olingo.commons.api.edm.geo.MultiPolygon;
 import org.apache.olingo.commons.api.edm.geo.Point;
 import org.apache.olingo.commons.api.edm.geo.Polygon;
-import java.math.BigDecimal;
-import java.net.URI;
-import java.util.UUID;
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.Calendar;
-import javax.xml.datatype.Duration;
 
 
-@Namespace("Microsoft.Test.OData.Services.AstoriaDefaultService")
-@EntityType(name = "MessageAttachment",
+@org.apache.olingo.ext.proxy.api.annotations.Namespace("Microsoft.Test.OData.Services.AstoriaDefaultService")
+@org.apache.olingo.ext.proxy.api.annotations.EntityType(name = "MessageAttachment",
         openType = false,
         hasStream = false,
         isAbstract = false)
 public interface MessageAttachment 
-  extends Serializable {
+  extends Annotatable,java.io.Serializable {
 
     
     @Key
-    @Property(name = "AttachmentId", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "AttachmentId", 
                 type = "Edm.Guid", 
                 nullable = false,
                 defaultValue = "",
@@ -80,12 +78,12 @@ public interface MessageAttachment
                 fcNSPrefix = "",
                 fcNSURI = "",
                 fcKeepInContent = false)
-    UUID getAttachmentId();
+    java.util.UUID getAttachmentId();
 
-    void setAttachmentId(final UUID _attachmentId);    
+    void setAttachmentId(java.util.UUID _attachmentId);    
     
     
-    @Property(name = "Attachment", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Attachment", 
                 type = "Edm.Binary", 
                 nullable = true,
                 defaultValue = "",
@@ -105,10 +103,30 @@ public interface MessageAttachment
                 fcKeepInContent = false)
     byte[] getAttachment();
 
-    void setAttachment(final byte[] _attachment);    
+    void setAttachment(byte[] _attachment);    
     
     
 
 
 
+    ComplexFactory factory();
+
+    interface ComplexFactory {
+    }
+
+    Annotations annotations();
+
+    interface Annotations {
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "AttachmentId",
+                   type = "Edm.Guid")
+        Annotatable getAttachmentIdAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Attachment",
+                   type = "Edm.Binary")
+        Annotatable getAttachmentAnnotations();
+
+
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/24a031b7/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/MessageAttachmentCollection.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/MessageAttachmentCollection.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/MessageAttachmentCollection.java
index 511b303..0f00e36 100644
--- a/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/MessageAttachmentCollection.java
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/MessageAttachmentCollection.java
@@ -21,6 +21,7 @@ package org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.se
 
 import org.apache.olingo.client.api.http.HttpMethod;
 import org.apache.olingo.ext.proxy.api.AbstractEntityCollection;
+import org.apache.olingo.ext.proxy.api.AbstractTerm;
 import org.apache.olingo.ext.proxy.api.OperationType;
 import org.apache.olingo.ext.proxy.api.annotations.Operation;
 import org.apache.olingo.ext.proxy.api.annotations.Parameter;
@@ -43,5 +44,9 @@ import java.util.Collection;
 import java.util.Calendar;
 import javax.xml.datatype.Duration;
 
-public interface MessageAttachmentCollection extends AbstractEntityCollection<MessageAttachment> {
+public interface MessageAttachmentCollection extends AbstractEntityCollection<org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.MessageAttachment> {
+
+  Object getAnnotation(Class<? extends AbstractTerm> term);
+
+  Collection<Class<? extends AbstractTerm>> getAnnotationTerms();
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/24a031b7/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/MessageCollection.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/MessageCollection.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/MessageCollection.java
index 8a0d8db..3592230 100644
--- a/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/MessageCollection.java
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/MessageCollection.java
@@ -21,6 +21,7 @@ package org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.se
 
 import org.apache.olingo.client.api.http.HttpMethod;
 import org.apache.olingo.ext.proxy.api.AbstractEntityCollection;
+import org.apache.olingo.ext.proxy.api.AbstractTerm;
 import org.apache.olingo.ext.proxy.api.OperationType;
 import org.apache.olingo.ext.proxy.api.annotations.Operation;
 import org.apache.olingo.ext.proxy.api.annotations.Parameter;
@@ -43,5 +44,9 @@ import java.util.Collection;
 import java.util.Calendar;
 import javax.xml.datatype.Duration;
 
-public interface MessageCollection extends AbstractEntityCollection<Message> {
+public interface MessageCollection extends AbstractEntityCollection<org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.Message> {
+
+  Object getAnnotation(Class<? extends AbstractTerm> term);
+
+  Collection<Class<? extends AbstractTerm>> getAnnotationTerms();
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/24a031b7/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/MessageKey.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/MessageKey.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/MessageKey.java
index 917a311..ade91b2 100644
--- a/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/MessageKey.java
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/MessageKey.java
@@ -47,28 +47,28 @@ import java.util.Collection;
 import java.util.Calendar;
 import javax.xml.datatype.Duration;
 
-@CompoundKey
+@org.apache.olingo.ext.proxy.api.annotations.CompoundKey
 public class MessageKey extends AbstractEntityKey {
 
-    private String _fromUsername;
+    private java.lang.String _fromUsername;
 
     @CompoundKeyElement(name = "FromUsername", position = 0)
-    public String getFromUsername() {
+    public java.lang.String getFromUsername() {
         return _fromUsername;
     }
 
-    public void setFromUsername(final String _fromUsername) {
+    public void setFromUsername(java.lang.String _fromUsername) {
         this._fromUsername = _fromUsername;
     }
 
-    private Integer _messageId;
+    private java.lang.Integer _messageId;
 
     @CompoundKeyElement(name = "MessageId", position = 1)
-    public Integer getMessageId() {
+    public java.lang.Integer getMessageId() {
         return _messageId;
     }
 
-    public void setMessageId(final Integer _messageId) {
+    public void setMessageId(java.lang.Integer _messageId) {
         this._messageId = _messageId;
     }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/24a031b7/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/Order.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/Order.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/Order.java
index a0a9984..b52b679 100644
--- a/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/Order.java
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/Order.java
@@ -20,16 +20,21 @@
 package org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types;
 
 import org.apache.olingo.client.api.http.HttpMethod;
+import org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty;
+import org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty;
 import org.apache.olingo.ext.proxy.api.annotations.Namespace;
 import org.apache.olingo.ext.proxy.api.annotations.EntityType;
+import org.apache.olingo.ext.proxy.api.annotations.EntitySet;
 import org.apache.olingo.ext.proxy.api.annotations.Key;
 import org.apache.olingo.ext.proxy.api.annotations.KeyRef;
 import org.apache.olingo.ext.proxy.api.annotations.NavigationProperty;
 import org.apache.olingo.ext.proxy.api.annotations.Property;
 import org.apache.olingo.ext.proxy.api.annotations.Operation;
 import org.apache.olingo.ext.proxy.api.annotations.Parameter;
+import org.apache.olingo.ext.proxy.api.Annotatable;
 import org.apache.olingo.ext.proxy.api.AbstractOpenType;
 import org.apache.olingo.ext.proxy.api.OperationType;
+import org.apache.olingo.ext.proxy.api.AbstractEntitySet;
 import org.apache.olingo.commons.api.edm.constants.EdmContentKind;
 import org.apache.olingo.client.api.edm.ConcurrencyMode;
 import org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.*;
@@ -43,26 +48,19 @@ import org.apache.olingo.commons.api.edm.geo.MultiPoint;
 import org.apache.olingo.commons.api.edm.geo.MultiPolygon;
 import org.apache.olingo.commons.api.edm.geo.Point;
 import org.apache.olingo.commons.api.edm.geo.Polygon;
-import java.math.BigDecimal;
-import java.net.URI;
-import java.util.UUID;
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.Calendar;
-import javax.xml.datatype.Duration;
 
 
-@Namespace("Microsoft.Test.OData.Services.AstoriaDefaultService")
-@EntityType(name = "Order",
+@org.apache.olingo.ext.proxy.api.annotations.Namespace("Microsoft.Test.OData.Services.AstoriaDefaultService")
+@org.apache.olingo.ext.proxy.api.annotations.EntityType(name = "Order",
         openType = false,
         hasStream = false,
         isAbstract = false)
 public interface Order 
-  extends Serializable {
+  extends Annotatable,java.io.Serializable {
 
     
     @Key
-    @Property(name = "OrderId", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "OrderId", 
                 type = "Edm.Int32", 
                 nullable = false,
                 defaultValue = "",
@@ -80,12 +78,12 @@ public interface Order
                 fcNSPrefix = "",
                 fcNSURI = "",
                 fcKeepInContent = false)
-    Integer getOrderId();
+    java.lang.Integer getOrderId();
 
-    void setOrderId(final Integer _orderId);    
+    void setOrderId(java.lang.Integer _orderId);    
     
     
-    @Property(name = "CustomerId", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "CustomerId", 
                 type = "Edm.Int32", 
                 nullable = true,
                 defaultValue = "",
@@ -103,12 +101,12 @@ public interface Order
                 fcNSPrefix = "",
                 fcNSURI = "",
                 fcKeepInContent = false)
-    Integer getCustomerId();
+    java.lang.Integer getCustomerId();
 
-    void setCustomerId(final Integer _customerId);    
+    void setCustomerId(java.lang.Integer _customerId);    
     
     
-    @Property(name = "Concurrency", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Concurrency", 
                 type = "Microsoft.Test.OData.Services.AstoriaDefaultService.ConcurrencyInfo", 
                 nullable = true,
                 defaultValue = "",
@@ -128,38 +126,66 @@ public interface Order
                 fcKeepInContent = false)
     org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.ConcurrencyInfo getConcurrency();
 
-    void setConcurrency(final org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.ConcurrencyInfo _concurrency);    
+    void setConcurrency(org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.ConcurrencyInfo _concurrency);    
         
     
 
-    @NavigationProperty(name = "Login", 
+    @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "Login", 
                 type = "Microsoft.Test.OData.Services.AstoriaDefaultService.Login", 
                 targetSchema = "Microsoft.Test.OData.Services.AstoriaDefaultService", 
                 targetContainer = "DefaultContainer", 
-                targetEntitySet = "Login")
+                targetEntitySet = "Login",
+                containsTarget = false)
     org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.Login getLogin();
 
-    void setLogin(final org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.Login _login);
-
-
-    @NavigationProperty(name = "Customer", 
+    void setLogin(org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.Login _login);
+    
+    @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "Customer", 
                 type = "Microsoft.Test.OData.Services.AstoriaDefaultService.Customer", 
                 targetSchema = "Microsoft.Test.OData.Services.AstoriaDefaultService", 
                 targetContainer = "DefaultContainer", 
-                targetEntitySet = "Customer")
+                targetEntitySet = "Customer",
+                containsTarget = false)
     org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.Customer getCustomer();
 
-    void setCustomer(final org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.Customer _customer);
-
-
+    void setCustomer(org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.Customer _customer);
+    
 
 
-        ComplexFactory factory();
+    ComplexFactory factory();
 
     interface ComplexFactory {
-             @Property(name = "Concurrency",
+         @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Concurrency",
                    type = "Microsoft.Test.OData.Services.AstoriaDefaultService.ConcurrencyInfo")
          org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.ConcurrencyInfo newConcurrency();
 
-        }
+    }
+
+    Annotations annotations();
+
+    interface Annotations {
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "OrderId",
+                   type = "Edm.Int32")
+        Annotatable getOrderIdAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "CustomerId",
+                   type = "Edm.Int32")
+        Annotatable getCustomerIdAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Concurrency",
+                   type = "Microsoft.Test.OData.Services.AstoriaDefaultService.ConcurrencyInfo")
+        Annotatable getConcurrencyAnnotations();
+
+
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty(name = "Login", 
+                  type = "Microsoft.Test.OData.Services.AstoriaDefaultService.Login")
+        Annotatable getLoginAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty(name = "Customer", 
+                  type = "Microsoft.Test.OData.Services.AstoriaDefaultService.Customer")
+        Annotatable getCustomerAnnotations();
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/24a031b7/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/OrderCollection.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/OrderCollection.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/OrderCollection.java
index cc7a740..8ce0c46 100644
--- a/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/OrderCollection.java
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/OrderCollection.java
@@ -21,6 +21,7 @@ package org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.se
 
 import org.apache.olingo.client.api.http.HttpMethod;
 import org.apache.olingo.ext.proxy.api.AbstractEntityCollection;
+import org.apache.olingo.ext.proxy.api.AbstractTerm;
 import org.apache.olingo.ext.proxy.api.OperationType;
 import org.apache.olingo.ext.proxy.api.annotations.Operation;
 import org.apache.olingo.ext.proxy.api.annotations.Parameter;
@@ -43,5 +44,9 @@ import java.util.Collection;
 import java.util.Calendar;
 import javax.xml.datatype.Duration;
 
-public interface OrderCollection extends AbstractEntityCollection<Order> {
+public interface OrderCollection extends AbstractEntityCollection<org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.Order> {
+
+  Object getAnnotation(Class<? extends AbstractTerm> term);
+
+  Collection<Class<? extends AbstractTerm>> getAnnotationTerms();
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/24a031b7/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/OrderLine.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/OrderLine.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/OrderLine.java
index 9bcdf77..4d61e6d 100644
--- a/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/OrderLine.java
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/OrderLine.java
@@ -20,16 +20,21 @@
 package org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types;
 
 import org.apache.olingo.client.api.http.HttpMethod;
+import org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty;
+import org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty;
 import org.apache.olingo.ext.proxy.api.annotations.Namespace;
 import org.apache.olingo.ext.proxy.api.annotations.EntityType;
+import org.apache.olingo.ext.proxy.api.annotations.EntitySet;
 import org.apache.olingo.ext.proxy.api.annotations.Key;
 import org.apache.olingo.ext.proxy.api.annotations.KeyRef;
 import org.apache.olingo.ext.proxy.api.annotations.NavigationProperty;
 import org.apache.olingo.ext.proxy.api.annotations.Property;
 import org.apache.olingo.ext.proxy.api.annotations.Operation;
 import org.apache.olingo.ext.proxy.api.annotations.Parameter;
+import org.apache.olingo.ext.proxy.api.Annotatable;
 import org.apache.olingo.ext.proxy.api.AbstractOpenType;
 import org.apache.olingo.ext.proxy.api.OperationType;
+import org.apache.olingo.ext.proxy.api.AbstractEntitySet;
 import org.apache.olingo.commons.api.edm.constants.EdmContentKind;
 import org.apache.olingo.client.api.edm.ConcurrencyMode;
 import org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.*;
@@ -43,26 +48,19 @@ import org.apache.olingo.commons.api.edm.geo.MultiPoint;
 import org.apache.olingo.commons.api.edm.geo.MultiPolygon;
 import org.apache.olingo.commons.api.edm.geo.Point;
 import org.apache.olingo.commons.api.edm.geo.Polygon;
-import java.math.BigDecimal;
-import java.net.URI;
-import java.util.UUID;
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.Calendar;
-import javax.xml.datatype.Duration;
 
 @KeyRef(OrderLineKey.class)
-@Namespace("Microsoft.Test.OData.Services.AstoriaDefaultService")
-@EntityType(name = "OrderLine",
+@org.apache.olingo.ext.proxy.api.annotations.Namespace("Microsoft.Test.OData.Services.AstoriaDefaultService")
+@org.apache.olingo.ext.proxy.api.annotations.EntityType(name = "OrderLine",
         openType = false,
         hasStream = false,
         isAbstract = false)
 public interface OrderLine 
-  extends Serializable {
+  extends Annotatable,java.io.Serializable {
 
         
     
-    @Property(name = "OrderLineStream", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "OrderLineStream", 
                 type = "Edm.Stream", 
                 nullable = false,
                 defaultValue = "",
@@ -82,10 +80,10 @@ public interface OrderLine
                 fcKeepInContent = false)
     java.io.InputStream getOrderLineStream();
 
-    void setOrderLineStream(final java.io.InputStream _orderLineStream);    
+    void setOrderLineStream(java.io.InputStream _orderLineStream);    
     
     @Key
-    @Property(name = "OrderId", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "OrderId", 
                 type = "Edm.Int32", 
                 nullable = false,
                 defaultValue = "",
@@ -103,12 +101,12 @@ public interface OrderLine
                 fcNSPrefix = "",
                 fcNSURI = "",
                 fcKeepInContent = false)
-    Integer getOrderId();
+    java.lang.Integer getOrderId();
 
-    void setOrderId(final Integer _orderId);    
+    void setOrderId(java.lang.Integer _orderId);    
     
     @Key
-    @Property(name = "ProductId", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "ProductId", 
                 type = "Edm.Int32", 
                 nullable = false,
                 defaultValue = "",
@@ -126,12 +124,12 @@ public interface OrderLine
                 fcNSPrefix = "",
                 fcNSURI = "",
                 fcKeepInContent = false)
-    Integer getProductId();
+    java.lang.Integer getProductId();
 
-    void setProductId(final Integer _productId);    
+    void setProductId(java.lang.Integer _productId);    
     
     
-    @Property(name = "Quantity", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Quantity", 
                 type = "Edm.Int32", 
                 nullable = false,
                 defaultValue = "",
@@ -149,12 +147,12 @@ public interface OrderLine
                 fcNSPrefix = "",
                 fcNSURI = "",
                 fcKeepInContent = false)
-    Integer getQuantity();
+    java.lang.Integer getQuantity();
 
-    void setQuantity(final Integer _quantity);    
+    void setQuantity(java.lang.Integer _quantity);    
     
     
-    @Property(name = "ConcurrencyToken", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "ConcurrencyToken", 
                 type = "Edm.String", 
                 nullable = true,
                 defaultValue = "",
@@ -172,43 +170,83 @@ public interface OrderLine
                 fcNSPrefix = "",
                 fcNSURI = "",
                 fcKeepInContent = false)
-    String getConcurrencyToken();
+    java.lang.String getConcurrencyToken();
 
-    void setConcurrencyToken(final String _concurrencyToken);    
+    void setConcurrencyToken(java.lang.String _concurrencyToken);    
     
     
 
-    @NavigationProperty(name = "Order", 
+    @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "Order", 
                 type = "Microsoft.Test.OData.Services.AstoriaDefaultService.Order", 
                 targetSchema = "Microsoft.Test.OData.Services.AstoriaDefaultService", 
                 targetContainer = "DefaultContainer", 
-                targetEntitySet = "Order")
+                targetEntitySet = "Order",
+                containsTarget = false)
     org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.Order getOrder();
 
-    void setOrder(final org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.Order _order);
-
-
-    @NavigationProperty(name = "Product", 
+    void setOrder(org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.Order _order);
+    
+    @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "Product", 
                 type = "Microsoft.Test.OData.Services.AstoriaDefaultService.Product", 
                 targetSchema = "Microsoft.Test.OData.Services.AstoriaDefaultService", 
                 targetContainer = "DefaultContainer", 
-                targetEntitySet = "Product")
+                targetEntitySet = "Product",
+                containsTarget = false)
     org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.Product getProduct();
 
-    void setProduct(final org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.Product _product);
-
-
+    void setProduct(org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.Product _product);
+    
 
         Operations operations();
 
     interface Operations {
     
-          @Operation(name = "RetrieveProduct",
+          @org.apache.olingo.ext.proxy.api.annotations.Operation(name = "RetrieveProduct",
                     type = OperationType.ACTION,
                     returnType = "Edm.Int32")
-      Integer retrieveProduct(
+      java.lang.Integer retrieveProduct(
             );
 
         }
 
+    ComplexFactory factory();
+
+    interface ComplexFactory {
+    }
+
+    Annotations annotations();
+
+    interface Annotations {
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "OrderLineStream",
+                   type = "Edm.Stream")
+        Annotatable getOrderLineStreamAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "OrderId",
+                   type = "Edm.Int32")
+        Annotatable getOrderIdAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "ProductId",
+                   type = "Edm.Int32")
+        Annotatable getProductIdAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Quantity",
+                   type = "Edm.Int32")
+        Annotatable getQuantityAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "ConcurrencyToken",
+                   type = "Edm.String")
+        Annotatable getConcurrencyTokenAnnotations();
+
+
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty(name = "Order", 
+                  type = "Microsoft.Test.OData.Services.AstoriaDefaultService.Order")
+        Annotatable getOrderAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty(name = "Product", 
+                  type = "Microsoft.Test.OData.Services.AstoriaDefaultService.Product")
+        Annotatable getProductAnnotations();
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/24a031b7/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/OrderLineCollection.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/OrderLineCollection.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/OrderLineCollection.java
index cf6db35..3ae9edb 100644
--- a/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/OrderLineCollection.java
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/OrderLineCollection.java
@@ -21,6 +21,7 @@ package org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.se
 
 import org.apache.olingo.client.api.http.HttpMethod;
 import org.apache.olingo.ext.proxy.api.AbstractEntityCollection;
+import org.apache.olingo.ext.proxy.api.AbstractTerm;
 import org.apache.olingo.ext.proxy.api.OperationType;
 import org.apache.olingo.ext.proxy.api.annotations.Operation;
 import org.apache.olingo.ext.proxy.api.annotations.Parameter;
@@ -43,5 +44,9 @@ import java.util.Collection;
 import java.util.Calendar;
 import javax.xml.datatype.Duration;
 
-public interface OrderLineCollection extends AbstractEntityCollection<OrderLine> {
+public interface OrderLineCollection extends AbstractEntityCollection<org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.OrderLine> {
+
+  Object getAnnotation(Class<? extends AbstractTerm> term);
+
+  Collection<Class<? extends AbstractTerm>> getAnnotationTerms();
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/24a031b7/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/OrderLineKey.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/OrderLineKey.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/OrderLineKey.java
index a5f67e0..88ffd50 100644
--- a/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/OrderLineKey.java
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/OrderLineKey.java
@@ -47,28 +47,28 @@ import java.util.Collection;
 import java.util.Calendar;
 import javax.xml.datatype.Duration;
 
-@CompoundKey
+@org.apache.olingo.ext.proxy.api.annotations.CompoundKey
 public class OrderLineKey extends AbstractEntityKey {
 
-    private Integer _orderId;
+    private java.lang.Integer _orderId;
 
     @CompoundKeyElement(name = "OrderId", position = 0)
-    public Integer getOrderId() {
+    public java.lang.Integer getOrderId() {
         return _orderId;
     }
 
-    public void setOrderId(final Integer _orderId) {
+    public void setOrderId(java.lang.Integer _orderId) {
         this._orderId = _orderId;
     }
 
-    private Integer _productId;
+    private java.lang.Integer _productId;
 
     @CompoundKeyElement(name = "ProductId", position = 1)
-    public Integer getProductId() {
+    public java.lang.Integer getProductId() {
         return _productId;
     }
 
-    public void setProductId(final Integer _productId) {
+    public void setProductId(java.lang.Integer _productId) {
         this._productId = _productId;
     }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/24a031b7/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/PageView.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/PageView.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/PageView.java
index 968fc24..7665a5a 100644
--- a/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/PageView.java
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/PageView.java
@@ -20,16 +20,21 @@
 package org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types;
 
 import org.apache.olingo.client.api.http.HttpMethod;
+import org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty;
+import org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty;
 import org.apache.olingo.ext.proxy.api.annotations.Namespace;
 import org.apache.olingo.ext.proxy.api.annotations.EntityType;
+import org.apache.olingo.ext.proxy.api.annotations.EntitySet;
 import org.apache.olingo.ext.proxy.api.annotations.Key;
 import org.apache.olingo.ext.proxy.api.annotations.KeyRef;
 import org.apache.olingo.ext.proxy.api.annotations.NavigationProperty;
 import org.apache.olingo.ext.proxy.api.annotations.Property;
 import org.apache.olingo.ext.proxy.api.annotations.Operation;
 import org.apache.olingo.ext.proxy.api.annotations.Parameter;
+import org.apache.olingo.ext.proxy.api.Annotatable;
 import org.apache.olingo.ext.proxy.api.AbstractOpenType;
 import org.apache.olingo.ext.proxy.api.OperationType;
+import org.apache.olingo.ext.proxy.api.AbstractEntitySet;
 import org.apache.olingo.commons.api.edm.constants.EdmContentKind;
 import org.apache.olingo.client.api.edm.ConcurrencyMode;
 import org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.*;
@@ -43,26 +48,19 @@ import org.apache.olingo.commons.api.edm.geo.MultiPoint;
 import org.apache.olingo.commons.api.edm.geo.MultiPolygon;
 import org.apache.olingo.commons.api.edm.geo.Point;
 import org.apache.olingo.commons.api.edm.geo.Polygon;
-import java.math.BigDecimal;
-import java.net.URI;
-import java.util.UUID;
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.Calendar;
-import javax.xml.datatype.Duration;
 
 
-@Namespace("Microsoft.Test.OData.Services.AstoriaDefaultService")
-@EntityType(name = "PageView",
+@org.apache.olingo.ext.proxy.api.annotations.Namespace("Microsoft.Test.OData.Services.AstoriaDefaultService")
+@org.apache.olingo.ext.proxy.api.annotations.EntityType(name = "PageView",
         openType = false,
         hasStream = false,
         isAbstract = false)
 public interface PageView 
-  extends Serializable {
+  extends Annotatable,java.io.Serializable {
 
     
     @Key
-    @Property(name = "PageViewId", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "PageViewId", 
                 type = "Edm.Int32", 
                 nullable = false,
                 defaultValue = "",
@@ -80,12 +78,12 @@ public interface PageView
                 fcNSPrefix = "",
                 fcNSURI = "",
                 fcKeepInContent = false)
-    Integer getPageViewId();
+    java.lang.Integer getPageViewId();
 
-    void setPageViewId(final Integer _pageViewId);    
+    void setPageViewId(java.lang.Integer _pageViewId);    
     
     
-    @Property(name = "Username", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Username", 
                 type = "Edm.String", 
                 nullable = true,
                 defaultValue = "",
@@ -103,12 +101,12 @@ public interface PageView
                 fcNSPrefix = "",
                 fcNSURI = "",
                 fcKeepInContent = false)
-    String getUsername();
+    java.lang.String getUsername();
 
-    void setUsername(final String _username);    
+    void setUsername(java.lang.String _username);    
     
     
-    @Property(name = "Viewed", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Viewed", 
                 type = "Edm.DateTimeOffset", 
                 nullable = false,
                 defaultValue = "",
@@ -126,12 +124,12 @@ public interface PageView
                 fcNSPrefix = "",
                 fcNSURI = "",
                 fcKeepInContent = false)
-    Calendar getViewed();
+    java.util.Calendar getViewed();
 
-    void setViewed(final Calendar _viewed);    
+    void setViewed(java.util.Calendar _viewed);    
     
     
-    @Property(name = "TimeSpentOnPage", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "TimeSpentOnPage", 
                 type = "Edm.Time", 
                 nullable = false,
                 defaultValue = "",
@@ -149,12 +147,12 @@ public interface PageView
                 fcNSPrefix = "",
                 fcNSURI = "",
                 fcKeepInContent = false)
-    BigDecimal getTimeSpentOnPage();
+    java.math.BigDecimal getTimeSpentOnPage();
 
-    void setTimeSpentOnPage(final BigDecimal _timeSpentOnPage);    
+    void setTimeSpentOnPage(java.math.BigDecimal _timeSpentOnPage);    
     
     
-    @Property(name = "PageUrl", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "PageUrl", 
                 type = "Edm.String", 
                 nullable = true,
                 defaultValue = "",
@@ -172,22 +170,58 @@ public interface PageView
                 fcNSPrefix = "",
                 fcNSURI = "",
                 fcKeepInContent = false)
-    String getPageUrl();
+    java.lang.String getPageUrl();
 
-    void setPageUrl(final String _pageUrl);    
+    void setPageUrl(java.lang.String _pageUrl);    
     
     
 
-    @NavigationProperty(name = "Login", 
+    @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "Login", 
                 type = "Microsoft.Test.OData.Services.AstoriaDefaultService.Login", 
                 targetSchema = "Microsoft.Test.OData.Services.AstoriaDefaultService", 
                 targetContainer = "DefaultContainer", 
-                targetEntitySet = "Login")
+                targetEntitySet = "Login",
+                containsTarget = false)
     org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.Login getLogin();
 
-    void setLogin(final org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.Login _login);
+    void setLogin(org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.Login _login);
+    
+
+
+    ComplexFactory factory();
+
+    interface ComplexFactory {
+    }
+
+    Annotations annotations();
+
+    interface Annotations {
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "PageViewId",
+                   type = "Edm.Int32")
+        Annotatable getPageViewIdAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Username",
+                   type = "Edm.String")
+        Annotatable getUsernameAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Viewed",
+                   type = "Edm.DateTimeOffset")
+        Annotatable getViewedAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "TimeSpentOnPage",
+                   type = "Edm.Time")
+        Annotatable getTimeSpentOnPageAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "PageUrl",
+                   type = "Edm.String")
+        Annotatable getPageUrlAnnotations();
 
 
 
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty(name = "Login", 
+                  type = "Microsoft.Test.OData.Services.AstoriaDefaultService.Login")
+        Annotatable getLoginAnnotations();
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/24a031b7/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/PageViewCollection.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/PageViewCollection.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/PageViewCollection.java
index a3725d8..7c5459f 100644
--- a/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/PageViewCollection.java
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/PageViewCollection.java
@@ -21,6 +21,7 @@ package org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.se
 
 import org.apache.olingo.client.api.http.HttpMethod;
 import org.apache.olingo.ext.proxy.api.AbstractEntityCollection;
+import org.apache.olingo.ext.proxy.api.AbstractTerm;
 import org.apache.olingo.ext.proxy.api.OperationType;
 import org.apache.olingo.ext.proxy.api.annotations.Operation;
 import org.apache.olingo.ext.proxy.api.annotations.Parameter;
@@ -43,5 +44,9 @@ import java.util.Collection;
 import java.util.Calendar;
 import javax.xml.datatype.Duration;
 
-public interface PageViewCollection extends AbstractEntityCollection<PageView> {
+public interface PageViewCollection extends AbstractEntityCollection<org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.PageView> {
+
+  Object getAnnotation(Class<? extends AbstractTerm> term);
+
+  Collection<Class<? extends AbstractTerm>> getAnnotationTerms();
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/24a031b7/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/Person.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/Person.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/Person.java
index 6713ec0..170ebf9 100644
--- a/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/Person.java
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/Person.java
@@ -20,16 +20,21 @@
 package org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types;
 
 import org.apache.olingo.client.api.http.HttpMethod;
+import org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty;
+import org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty;
 import org.apache.olingo.ext.proxy.api.annotations.Namespace;
 import org.apache.olingo.ext.proxy.api.annotations.EntityType;
+import org.apache.olingo.ext.proxy.api.annotations.EntitySet;
 import org.apache.olingo.ext.proxy.api.annotations.Key;
 import org.apache.olingo.ext.proxy.api.annotations.KeyRef;
 import org.apache.olingo.ext.proxy.api.annotations.NavigationProperty;
 import org.apache.olingo.ext.proxy.api.annotations.Property;
 import org.apache.olingo.ext.proxy.api.annotations.Operation;
 import org.apache.olingo.ext.proxy.api.annotations.Parameter;
+import org.apache.olingo.ext.proxy.api.Annotatable;
 import org.apache.olingo.ext.proxy.api.AbstractOpenType;
 import org.apache.olingo.ext.proxy.api.OperationType;
+import org.apache.olingo.ext.proxy.api.AbstractEntitySet;
 import org.apache.olingo.commons.api.edm.constants.EdmContentKind;
 import org.apache.olingo.client.api.edm.ConcurrencyMode;
 import org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.*;
@@ -43,26 +48,19 @@ import org.apache.olingo.commons.api.edm.geo.MultiPoint;
 import org.apache.olingo.commons.api.edm.geo.MultiPolygon;
 import org.apache.olingo.commons.api.edm.geo.Point;
 import org.apache.olingo.commons.api.edm.geo.Polygon;
-import java.math.BigDecimal;
-import java.net.URI;
-import java.util.UUID;
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.Calendar;
-import javax.xml.datatype.Duration;
 
 
-@Namespace("Microsoft.Test.OData.Services.AstoriaDefaultService")
-@EntityType(name = "Person",
+@org.apache.olingo.ext.proxy.api.annotations.Namespace("Microsoft.Test.OData.Services.AstoriaDefaultService")
+@org.apache.olingo.ext.proxy.api.annotations.EntityType(name = "Person",
         openType = false,
         hasStream = false,
         isAbstract = false)
 public interface Person 
-  extends Serializable {
+  extends Annotatable,java.io.Serializable {
 
     
     @Key
-    @Property(name = "PersonId", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "PersonId", 
                 type = "Edm.Int32", 
                 nullable = false,
                 defaultValue = "",
@@ -80,12 +78,12 @@ public interface Person
                 fcNSPrefix = "",
                 fcNSURI = "",
                 fcKeepInContent = false)
-    Integer getPersonId();
+    java.lang.Integer getPersonId();
 
-    void setPersonId(final Integer _personId);    
+    void setPersonId(java.lang.Integer _personId);    
     
     
-    @Property(name = "Name", 
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Name", 
                 type = "Edm.String", 
                 nullable = true,
                 defaultValue = "",
@@ -103,32 +101,56 @@ public interface Person
                 fcNSPrefix = "",
                 fcNSURI = "",
                 fcKeepInContent = false)
-    String getName();
+    java.lang.String getName();
 
-    void setName(final String _name);    
+    void setName(java.lang.String _name);    
     
     
 
-    @NavigationProperty(name = "PersonMetadata", 
+    @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "PersonMetadata", 
                 type = "Microsoft.Test.OData.Services.AstoriaDefaultService.PersonMetadata", 
                 targetSchema = "Microsoft.Test.OData.Services.AstoriaDefaultService", 
                 targetContainer = "DefaultContainer", 
-                targetEntitySet = "PersonMetadata")
+                targetEntitySet = "PersonMetadata",
+                containsTarget = false)
     org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.PersonMetadataCollection getPersonMetadata();
 
-    void setPersonMetadata(final org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.PersonMetadataCollection _personMetadata);
-
-
+    void setPersonMetadata(org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.PersonMetadataCollection _personMetadata);
+    
 
         Operations operations();
 
     interface Operations {
     
-          @Operation(name = "UpdatePersonInfo",
+          @org.apache.olingo.ext.proxy.api.annotations.Operation(name = "UpdatePersonInfo",
                     type = OperationType.ACTION)
       void updatePersonInfo(
             );
 
         }
 
+    ComplexFactory factory();
+
+    interface ComplexFactory {
+    }
+
+    Annotations annotations();
+
+    interface Annotations {
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "PersonId",
+                   type = "Edm.Int32")
+        Annotatable getPersonIdAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Name",
+                   type = "Edm.String")
+        Annotatable getNameAnnotations();
+
+
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty(name = "PersonMetadata", 
+                  type = "Microsoft.Test.OData.Services.AstoriaDefaultService.PersonMetadata")
+        Annotatable getPersonMetadataAnnotations();
+    }
+
 }