You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by il...@apache.org on 2014/08/04 13:13:32 UTC
[17/20] git commit: [OLINGO-365] Composable function invocation
refactory - in progress
[OLINGO-365] Composable function invocation refactory - in progress
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/c0b92cf0
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/c0b92cf0
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/c0b92cf0
Branch: refs/heads/master
Commit: c0b92cf09ed1dc712051c4b93bfef5b3d6a02419
Parents: 312aff1
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Sun Aug 3 15:24:54 2014 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Sun Aug 3 15:24:54 2014 +0200
----------------------------------------------------------------------
.../olingo/ext/proxy/api/ComposableInvoker.java | 2 +-
.../AbstractStructuredInvocationHandler.java | 2 +-
.../ComplexCollectionInvocationHandler.java | 3 +-
.../proxy/commons/ComplexInvocationHandler.java | 45 +-
.../ext/proxy/commons/InvokerHandler.java | 24 +-
.../commons/OperationInvocationHandler.java | 12 +-
.../olingo/ext/proxy/utils/CoreUtils.java | 4 +-
.../olingo/ext/pojogen/AbstractPOJOGenMojo.java | 21 +-
.../complexCollectionComposableInvoker.vm | 58 +++
.../resources/complexTypeComposableInvoker.vm | 48 ++
.../src/main/resources/container.vm | 21 +-
.../entityCollectionComposableInvoker.vm | 58 +++
.../main/resources/entityComposableInvoker.vm | 163 ++++++
.../src/main/resources/operation.vm | 26 +-
.../v30/complexTypeComposableInvoker.vm | 51 ++
.../v40/complexTypeComposableInvoker.vm | 115 +++++
.../AliasesCollectionComposableInvoker.java | 32 ++
.../types/AliasesComposableInvoker.java | 45 ++
...lectionTypesCollectionComposableInvoker.java | 32 ++
...SpatialCollectionTypesComposableInvoker.java | 64 +++
...Types_SimpleCollectionComposableInvoker.java | 32 ++
...CollectionTypes_SimpleComposableInvoker.java | 202 ++++++++
...SpatialTypesCollectionComposableInvoker.java | 32 ++
.../types/AllSpatialTypesComposableInvoker.java | 432 ++++++++++++++++
.../AuditInfoCollectionComposableInvoker.java | 32 ++
.../types/AuditInfoComposableInvoker.java | 67 +++
...ckOrderLine2CollectionComposableInvoker.java | 32 ++
.../types/BackOrderLine2ComposableInvoker.java | 176 +++++++
...ackOrderLineCollectionComposableInvoker.java | 32 ++
.../types/BackOrderLineComposableInvoker.java | 176 +++++++
.../types/CarCollectionComposableInvoker.java | 32 ++
.../types/CarComposableInvoker.java | 136 +++++
...exToCategoryCollectionComposableInvoker.java | 32 ++
.../ComplexToCategoryComposableInvoker.java | 67 +++
.../ComputerCollectionComposableInvoker.java | 32 ++
.../types/ComputerComposableInvoker.java | 97 ++++
...mputerDetailCollectionComposableInvoker.java | 32 ++
.../types/ComputerDetailComposableInvoker.java | 212 ++++++++
...currencyInfoCollectionComposableInvoker.java | 32 ++
.../types/ConcurrencyInfoComposableInvoker.java | 56 +++
...ntactDetailsCollectionComposableInvoker.java | 32 ++
.../types/ContactDetailsComposableInvoker.java | 100 ++++
.../ContractorCollectionComposableInvoker.java | 32 ++
.../types/ContractorComposableInvoker.java | 189 +++++++
.../CustomerCollectionComposableInvoker.java | 32 ++
.../types/CustomerComposableInvoker.java | 252 ++++++++++
...CustomerInfoCollectionComposableInvoker.java | 32 ++
.../types/CustomerInfoComposableInvoker.java | 90 ++++
.../DimensionsCollectionComposableInvoker.java | 32 ++
.../types/DimensionsComposableInvoker.java | 67 +++
...inuedProductCollectionComposableInvoker.java | 32 ++
.../DiscontinuedProductComposableInvoker.java | 334 +++++++++++++
.../DriverCollectionComposableInvoker.java | 32 ++
.../types/DriverComposableInvoker.java | 97 ++++
.../EmployeeCollectionComposableInvoker.java | 32 ++
.../types/EmployeeComposableInvoker.java | 176 +++++++
.../LastLoginCollectionComposableInvoker.java | 32 ++
.../types/LastLoginComposableInvoker.java | 143 ++++++
.../LicenseCollectionComposableInvoker.java | 32 ++
.../types/LicenseComposableInvoker.java | 166 ++++++
.../types/LoginCollectionComposableInvoker.java | 32 ++
.../types/LoginComposableInvoker.java | 137 +++++
...edEntityTypeCollectionComposableInvoker.java | 32 ++
.../MappedEntityTypeComposableInvoker.java | 501 +++++++++++++++++++
...geAttachmentCollectionComposableInvoker.java | 32 ++
.../MessageAttachmentComposableInvoker.java | 87 ++++
.../MessageCollectionComposableInvoker.java | 32 ++
.../types/MessageComposableInvoker.java | 232 +++++++++
.../types/OrderCollectionComposableInvoker.java | 32 ++
.../types/OrderComposableInvoker.java | 130 +++++
.../OrderLineCollectionComposableInvoker.java | 32 ++
.../types/OrderLineComposableInvoker.java | 176 +++++++
.../PageViewCollectionComposableInvoker.java | 32 ++
.../types/PageViewComposableInvoker.java | 166 ++++++
.../PersonCollectionComposableInvoker.java | 32 ++
.../types/PersonComposableInvoker.java | 97 ++++
...rsonMetadataCollectionComposableInvoker.java | 32 ++
.../types/PersonMetadataComposableInvoker.java | 143 ++++++
.../types/PhoneCollectionComposableInvoker.java | 32 ++
.../types/PhoneComposableInvoker.java | 56 +++
.../ProductCollectionComposableInvoker.java | 32 ++
.../types/ProductComposableInvoker.java | 242 +++++++++
...roductDetailCollectionComposableInvoker.java | 32 ++
.../types/ProductDetailComposableInvoker.java | 97 ++++
...ductPageViewCollectionComposableInvoker.java | 32 ++
.../types/ProductPageViewComposableInvoker.java | 212 ++++++++
...ProductPhotoCollectionComposableInvoker.java | 32 ++
.../types/ProductPhotoComposableInvoker.java | 110 ++++
...roductReviewCollectionComposableInvoker.java | 32 ++
.../types/ProductReviewComposableInvoker.java | 143 ++++++
.../RSATokenCollectionComposableInvoker.java | 32 ++
.../types/RSATokenComposableInvoker.java | 97 ++++
...cialEmployeeCollectionComposableInvoker.java | 32 ++
.../types/SpecialEmployeeComposableInvoker.java | 255 ++++++++++
...ntactDetailsCollectionComposableInvoker.java | 32 ++
.../types/ContactDetailsComposableInvoker.java | 166 ++++++
.../IndexedRowCollectionComposableInvoker.java | 32 ++
.../types/IndexedRowComposableInvoker.java | 65 +++
.../types/RowCollectionComposableInvoker.java | 32 ++
.../types/RowComposableInvoker.java | 65 +++
.../RowIndexCollectionComposableInvoker.java | 32 ++
.../types/RowIndexComposableInvoker.java | 75 +++
.../EdmBinaryCollectionComposableInvoker.java | 32 ++
.../types/EdmBinaryComposableInvoker.java | 64 +++
.../EdmBooleanCollectionComposableInvoker.java | 32 ++
.../types/EdmBooleanComposableInvoker.java | 64 +++
.../EdmByteCollectionComposableInvoker.java | 32 ++
.../types/EdmByteComposableInvoker.java | 64 +++
.../EdmDateTimeCollectionComposableInvoker.java | 32 ++
.../types/EdmDateTimeComposableInvoker.java | 64 +++
...teTimeOffsetCollectionComposableInvoker.java | 32 ++
.../EdmDateTimeOffsetComposableInvoker.java | 64 +++
.../EdmDecimalCollectionComposableInvoker.java | 32 ++
.../types/EdmDecimalComposableInvoker.java | 64 +++
.../EdmDoubleCollectionComposableInvoker.java | 32 ++
.../types/EdmDoubleComposableInvoker.java | 64 +++
.../EdmGuidCollectionComposableInvoker.java | 32 ++
.../types/EdmGuidComposableInvoker.java | 64 +++
.../EdmInt16CollectionComposableInvoker.java | 32 ++
.../types/EdmInt16ComposableInvoker.java | 64 +++
.../EdmInt32CollectionComposableInvoker.java | 32 ++
.../types/EdmInt32ComposableInvoker.java | 64 +++
.../EdmInt64CollectionComposableInvoker.java | 32 ++
.../types/EdmInt64ComposableInvoker.java | 64 +++
.../EdmSingleCollectionComposableInvoker.java | 32 ++
.../types/EdmSingleComposableInvoker.java | 64 +++
.../EdmStringCollectionComposableInvoker.java | 32 ++
.../types/EdmStringComposableInvoker.java | 64 +++
.../EdmTimeCollectionComposableInvoker.java | 32 ++
.../types/EdmTimeComposableInvoker.java | 64 +++
.../FolderCollectionComposableInvoker.java | 32 ++
.../types/FolderComposableInvoker.java | 97 ++++
.../AliasesCollectionComposableInvoker.java | 32 ++
.../types/AliasesComposableInvoker.java | 45 ++
...lectionTypesCollectionComposableInvoker.java | 32 ++
...SpatialCollectionTypesComposableInvoker.java | 64 +++
...Types_SimpleCollectionComposableInvoker.java | 32 ++
...CollectionTypes_SimpleComposableInvoker.java | 202 ++++++++
...SpatialTypesCollectionComposableInvoker.java | 32 ++
.../types/AllSpatialTypesComposableInvoker.java | 432 ++++++++++++++++
.../AuditInfoCollectionComposableInvoker.java | 32 ++
.../types/AuditInfoComposableInvoker.java | 67 +++
...ckOrderLine2CollectionComposableInvoker.java | 32 ++
.../types/BackOrderLine2ComposableInvoker.java | 176 +++++++
...ackOrderLineCollectionComposableInvoker.java | 32 ++
.../types/BackOrderLineComposableInvoker.java | 176 +++++++
.../types/CarCollectionComposableInvoker.java | 32 ++
.../types/CarComposableInvoker.java | 136 +++++
...exToCategoryCollectionComposableInvoker.java | 32 ++
.../ComplexToCategoryComposableInvoker.java | 67 +++
...imitiveTypesCollectionComposableInvoker.java | 32 ++
...xWithAllPrimitiveTypesComposableInvoker.java | 188 +++++++
.../ComputerCollectionComposableInvoker.java | 32 ++
.../types/ComputerComposableInvoker.java | 97 ++++
...mputerDetailCollectionComposableInvoker.java | 32 ++
.../types/ComputerDetailComposableInvoker.java | 212 ++++++++
...currencyInfoCollectionComposableInvoker.java | 32 ++
.../types/ConcurrencyInfoComposableInvoker.java | 56 +++
...ntactDetailsCollectionComposableInvoker.java | 32 ++
.../types/ContactDetailsComposableInvoker.java | 100 ++++
.../ContractorCollectionComposableInvoker.java | 32 ++
.../types/ContractorComposableInvoker.java | 189 +++++++
.../CustomerCollectionComposableInvoker.java | 32 ++
.../types/CustomerComposableInvoker.java | 252 ++++++++++
...CustomerInfoCollectionComposableInvoker.java | 32 ++
.../types/CustomerInfoComposableInvoker.java | 90 ++++
.../DimensionsCollectionComposableInvoker.java | 32 ++
.../types/DimensionsComposableInvoker.java | 67 +++
...inuedProductCollectionComposableInvoker.java | 32 ++
.../DiscontinuedProductComposableInvoker.java | 334 +++++++++++++
.../DriverCollectionComposableInvoker.java | 32 ++
.../types/DriverComposableInvoker.java | 97 ++++
.../EmployeeCollectionComposableInvoker.java | 32 ++
.../types/EmployeeComposableInvoker.java | 176 +++++++
.../LastLoginCollectionComposableInvoker.java | 32 ++
.../types/LastLoginComposableInvoker.java | 143 ++++++
.../LicenseCollectionComposableInvoker.java | 32 ++
.../types/LicenseComposableInvoker.java | 166 ++++++
.../types/LoginCollectionComposableInvoker.java | 32 ++
.../types/LoginComposableInvoker.java | 137 +++++
...edEntityTypeCollectionComposableInvoker.java | 32 ++
.../MappedEntityTypeComposableInvoker.java | 501 +++++++++++++++++++
...geAttachmentCollectionComposableInvoker.java | 32 ++
.../MessageAttachmentComposableInvoker.java | 87 ++++
.../MessageCollectionComposableInvoker.java | 32 ++
.../types/MessageComposableInvoker.java | 232 +++++++++
.../types/OrderCollectionComposableInvoker.java | 32 ++
.../types/OrderComposableInvoker.java | 130 +++++
.../OrderLineCollectionComposableInvoker.java | 32 ++
.../types/OrderLineComposableInvoker.java | 176 +++++++
.../PageViewCollectionComposableInvoker.java | 32 ++
.../types/PageViewComposableInvoker.java | 166 ++++++
.../PersonCollectionComposableInvoker.java | 32 ++
.../types/PersonComposableInvoker.java | 97 ++++
...rsonMetadataCollectionComposableInvoker.java | 32 ++
.../types/PersonMetadataComposableInvoker.java | 143 ++++++
.../types/PhoneCollectionComposableInvoker.java | 32 ++
.../types/PhoneComposableInvoker.java | 56 +++
.../ProductCollectionComposableInvoker.java | 32 ++
.../types/ProductComposableInvoker.java | 242 +++++++++
...roductDetailCollectionComposableInvoker.java | 32 ++
.../types/ProductDetailComposableInvoker.java | 97 ++++
...ductPageViewCollectionComposableInvoker.java | 32 ++
.../types/ProductPageViewComposableInvoker.java | 212 ++++++++
...ProductPhotoCollectionComposableInvoker.java | 32 ++
.../types/ProductPhotoComposableInvoker.java | 110 ++++
...roductReviewCollectionComposableInvoker.java | 32 ++
.../types/ProductReviewComposableInvoker.java | 143 ++++++
.../RSATokenCollectionComposableInvoker.java | 32 ++
.../types/RSATokenComposableInvoker.java | 97 ++++
...cialEmployeeCollectionComposableInvoker.java | 32 ++
.../types/SpecialEmployeeComposableInvoker.java | 255 ++++++++++
.../fit/proxy/v4/APIBasicDesignTestITCase.java | 6 +-
.../olingo/fit/proxy/v4/AsyncTestITCase.java | 2 +-
.../AddressCollectionComposableInvoker.java | 32 ++
.../types/AddressComposableInvoker.java | 123 +++++
...dvertisementCollectionComposableInvoker.java | 32 ++
.../types/AdvertisementComposableInvoker.java | 123 +++++
.../CategoryCollectionComposableInvoker.java | 32 ++
.../types/CategoryComposableInvoker.java | 98 ++++
.../CustomerCollectionComposableInvoker.java | 32 ++
.../types/CustomerComposableInvoker.java | 120 +++++
.../EmployeeCollectionComposableInvoker.java | 32 ++
.../types/EmployeeComposableInvoker.java | 166 ++++++
...turedProductCollectionComposableInvoker.java | 32 ++
.../types/FeaturedProductComposableInvoker.java | 242 +++++++++
.../PersonCollectionComposableInvoker.java | 32 ++
.../types/PersonComposableInvoker.java | 97 ++++
...PersonDetailCollectionComposableInvoker.java | 32 ++
.../types/PersonDetailComposableInvoker.java | 189 +++++++
.../ProductCollectionComposableInvoker.java | 32 ++
.../types/ProductComposableInvoker.java | 232 +++++++++
...roductDetailCollectionComposableInvoker.java | 32 ++
.../types/ProductDetailComposableInvoker.java | 97 ++++
.../SupplierCollectionComposableInvoker.java | 32 ++
.../types/SupplierComposableInvoker.java | 166 ++++++
.../AccountInfoCollectionComposableInvoker.java | 32 ++
.../types/AccountInfoComposableInvoker.java | 74 +++
...ntactDetailsCollectionComposableInvoker.java | 32 ++
.../types/ContactDetailsComposableInvoker.java | 242 +++++++++
.../IndexedRowCollectionComposableInvoker.java | 32 ++
.../types/IndexedRowComposableInvoker.java | 65 +++
.../types/RowCollectionComposableInvoker.java | 32 ++
.../types/RowComposableInvoker.java | 65 +++
.../RowIndexCollectionComposableInvoker.java | 32 ++
.../types/RowIndexComposableInvoker.java | 75 +++
.../odatawcfservice/InMemoryEntities.java | 6 +-
.../AccountCollectionComposableInvoker.java | 32 ++
.../types/AccountComposableInvoker.java | 169 +++++++
.../AccountInfoCollectionComposableInvoker.java | 32 ++
.../types/AccountInfoComposableInvoker.java | 74 +++
.../AddressCollectionComposableInvoker.java | 32 ++
.../types/AddressComposableInvoker.java | 89 ++++
.../types/AssetCollectionComposableInvoker.java | 32 ++
.../types/AssetComposableInvoker.java | 110 ++++
.../types/ClubCollectionComposableInvoker.java | 32 ++
.../types/ClubComposableInvoker.java | 87 ++++
...mpanyAddressCollectionComposableInvoker.java | 32 ++
.../types/CompanyAddressComposableInvoker.java | 106 ++++
.../CompanyCollectionComposableInvoker.java | 32 ++
.../types/CompanyComposableInvoker.java | 197 ++++++++
...CreditCardPICollectionComposableInvoker.java | 32 ++
.../types/CreditCardPIComposableInvoker.java | 266 ++++++++++
...CreditRecordCollectionComposableInvoker.java | 32 ++
.../types/CreditRecordComposableInvoker.java | 133 +++++
.../CustomerCollectionComposableInvoker.java | 32 ++
.../types/CustomerComposableInvoker.java | 324 ++++++++++++
.../DepartmentCollectionComposableInvoker.java | 32 ++
.../types/DepartmentComposableInvoker.java | 120 +++++
.../EmployeeCollectionComposableInvoker.java | 32 ++
.../types/EmployeeComposableInvoker.java | 291 +++++++++++
.../GiftCardCollectionComposableInvoker.java | 32 ++
.../types/GiftCardComposableInvoker.java | 156 ++++++
.../HomeAddressCollectionComposableInvoker.java | 32 ++
.../types/HomeAddressComposableInvoker.java | 106 ++++
.../LabourUnionCollectionComposableInvoker.java | 32 ++
.../types/LabourUnionComposableInvoker.java | 87 ++++
.../types/OrderCollectionComposableInvoker.java | 32 ++
.../types/OrderComposableInvoker.java | 163 ++++++
.../OrderDetailCollectionComposableInvoker.java | 32 ++
.../types/OrderDetailComposableInvoker.java | 176 +++++++
...ntInstrumentCollectionComposableInvoker.java | 32 ++
.../PaymentInstrumentComposableInvoker.java | 150 ++++++
.../PersonCollectionComposableInvoker.java | 32 ++
.../types/PersonComposableInvoker.java | 235 +++++++++
.../ProductCollectionComposableInvoker.java | 32 ++
.../types/ProductComposableInvoker.java | 258 ++++++++++
...roductDetailCollectionComposableInvoker.java | 32 ++
.../types/ProductDetailComposableInvoker.java | 153 ++++++
...roductReviewCollectionComposableInvoker.java | 32 ++
.../types/ProductReviewComposableInvoker.java | 179 +++++++
...ublicCompanyCollectionComposableInvoker.java | 32 ++
.../types/PublicCompanyComposableInvoker.java | 260 ++++++++++
.../StatementCollectionComposableInvoker.java | 32 ++
.../types/StatementComposableInvoker.java | 133 +++++
.../StoredPICollectionComposableInvoker.java | 32 ++
.../types/StoredPIComposableInvoker.java | 133 +++++
...SubscriptionCollectionComposableInvoker.java | 32 ++
.../types/SubscriptionComposableInvoker.java | 156 ++++++
.../invoke/AbstractODataInvokeRequest.java | 6 +-
.../invoke/v3/ODataInvokeRequestImpl.java | 6 -
.../invoke/v4/ODataInvokeRequestImpl.java | 7 -
.../apache/olingo/client/core/uri/URIUtils.java | 2 +-
303 files changed, 25553 insertions(+), 102 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c0b92cf0/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/api/ComposableInvoker.java
----------------------------------------------------------------------
diff --git a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/api/ComposableInvoker.java b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/api/ComposableInvoker.java
index 9319ebd..4ebe43d 100644
--- a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/api/ComposableInvoker.java
+++ b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/api/ComposableInvoker.java
@@ -20,5 +20,5 @@ package org.apache.olingo.ext.proxy.api;
public interface ComposableInvoker<T, O extends Operations> extends Invoker<T> {
- O compose();
+ O operations();
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c0b92cf0/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/AbstractStructuredInvocationHandler.java
----------------------------------------------------------------------
diff --git a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/AbstractStructuredInvocationHandler.java b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/AbstractStructuredInvocationHandler.java
index 6b54f02..b9710db 100644
--- a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/AbstractStructuredInvocationHandler.java
+++ b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/AbstractStructuredInvocationHandler.java
@@ -329,8 +329,8 @@ public abstract class AbstractStructuredInvocationHandler extends AbstractInvoca
if (property == null || property.hasNullValue()) {
collectionHandler = new ComplexCollectionInvocationHandler(
- service,
itemRef,
+ service,
baseURI == null
? null : getClient().newURIBuilder(baseURI.toASCIIString()).appendPropertySegment(name));
} else {
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c0b92cf0/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/ComplexCollectionInvocationHandler.java
----------------------------------------------------------------------
diff --git a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/ComplexCollectionInvocationHandler.java b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/ComplexCollectionInvocationHandler.java
index 342a2a6..efc650d 100644
--- a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/ComplexCollectionInvocationHandler.java
+++ b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/ComplexCollectionInvocationHandler.java
@@ -53,9 +53,10 @@ public class ComplexCollectionInvocationHandler<T extends ComplexType<?>>
}
public ComplexCollectionInvocationHandler(
- final AbstractService<?> service,
final Class<T> itemRef,
+ final AbstractService<?> service,
final CommonURIBuilder<?> uri) {
+
this(service, new ArrayList<T>(), itemRef, uri);
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c0b92cf0/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/ComplexInvocationHandler.java
----------------------------------------------------------------------
diff --git a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/ComplexInvocationHandler.java b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/ComplexInvocationHandler.java
index b0ab9b2..1a4838e 100644
--- a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/ComplexInvocationHandler.java
+++ b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/ComplexInvocationHandler.java
@@ -27,27 +27,26 @@ import org.apache.olingo.commons.api.edm.FullQualifiedName;
import org.apache.olingo.ext.proxy.api.annotations.ComplexType;
import org.apache.olingo.ext.proxy.api.annotations.NavigationProperty;
import org.apache.olingo.ext.proxy.utils.ClassUtils;
-
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
import org.apache.olingo.client.api.communication.request.retrieve.ODataPropertyRequest;
import org.apache.olingo.client.api.communication.response.ODataRetrieveResponse;
import org.apache.olingo.client.api.uri.CommonURIBuilder;
import org.apache.olingo.ext.proxy.AbstractService;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
public class ComplexInvocationHandler extends AbstractStructuredInvocationHandler {
private static Pair<ODataComplexValue<? extends CommonODataProperty>, Class<?>> init(
- final AbstractService<?> service,
- final Class<?> reference) {
+ final Class<?> typeRef,
+ final AbstractService<?> service) {
final Class<?> complexTypeRef;
- if (Collection.class.isAssignableFrom(reference)) {
- complexTypeRef = ClassUtils.extractTypeArg(reference);
+ if (Collection.class.isAssignableFrom(typeRef)) {
+ complexTypeRef = ClassUtils.extractTypeArg(typeRef);
} else {
- complexTypeRef = reference;
+ complexTypeRef = typeRef;
}
final ComplexType annotation = complexTypeRef.getAnnotation(ComplexType.class);
@@ -57,7 +56,6 @@ public class ComplexInvocationHandler extends AbstractStructuredInvocationHandle
final FullQualifiedName typeName =
new FullQualifiedName(ClassUtils.getNamespace(complexTypeRef), annotation.name());
-
final ODataComplexValue<? extends CommonODataProperty> complex =
service.getClient().getObjectFactory().newComplexValue(typeName.toString());
@@ -66,42 +64,45 @@ public class ComplexInvocationHandler extends AbstractStructuredInvocationHandle
public static ComplexInvocationHandler getInstance(
final String propertyName,
- final Class<?> reference,
- final EntityInvocationHandler handler) {
+ final EntityInvocationHandler handler,
+ final Class<?> typeRef) {
- final Pair<ODataComplexValue<? extends CommonODataProperty>, Class<?>> init = init(handler.service, reference);
+ final Pair<ODataComplexValue<? extends CommonODataProperty>, Class<?>> init = init(typeRef, handler.service);
return new ComplexInvocationHandler(init.getLeft(), init.getRight(), handler);
}
public static ComplexInvocationHandler getInstance(
final ODataComplexValue<?> complex,
- final Class<?> reference,
+ final Class<?> typeRef,
final AbstractService<?> service) {
- return new ComplexInvocationHandler(complex, reference, service);
+ return new ComplexInvocationHandler(complex, typeRef, service);
}
public static ComplexInvocationHandler getInstance(
final Class<?> typeRef,
final AbstractService<?> service) {
- final Pair<ODataComplexValue<? extends CommonODataProperty>, Class<?>> init = init(service, typeRef);
+
+ final Pair<ODataComplexValue<? extends CommonODataProperty>, Class<?>> init = init(typeRef, service);
return new ComplexInvocationHandler(init.getLeft(), init.getRight(), service);
}
public static ComplexInvocationHandler getInstance(
- final Class<?> reference,
+ final Class<?> typeRef,
final AbstractService<?> service,
final CommonURIBuilder<?> uri) {
- final Pair<ODataComplexValue<? extends CommonODataProperty>, Class<?>> init = init(service, reference);
+
+ final Pair<ODataComplexValue<? extends CommonODataProperty>, Class<?>> init = init(typeRef, service);
return new ComplexInvocationHandler(init.getLeft(), init.getRight(), service, uri);
}
public static ComplexInvocationHandler getInstance(
final ODataComplexValue<? extends CommonODataProperty> complex,
- final Class<?> reference,
+ final Class<?> typeRef,
final AbstractService<?> service,
final CommonURIBuilder<?> uri) {
- return new ComplexInvocationHandler(complex, reference, service, uri);
+
+ return new ComplexInvocationHandler(complex, typeRef, service, uri);
}
private ComplexInvocationHandler(
@@ -184,7 +185,7 @@ public class ComplexInvocationHandler extends AbstractStructuredInvocationHandle
}
@Override
- protected CommonODataProperty getInternalProperty(String name) {
+ protected CommonODataProperty getInternalProperty(final String name) {
return getComplex() == null ? null : getComplex().get(name);
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c0b92cf0/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/InvokerHandler.java
----------------------------------------------------------------------
diff --git a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/InvokerHandler.java b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/InvokerHandler.java
index 8db5463..2c27dc3 100644
--- a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/InvokerHandler.java
+++ b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/InvokerHandler.java
@@ -55,7 +55,7 @@ import org.apache.olingo.ext.proxy.utils.ClassUtils;
import org.apache.olingo.ext.proxy.utils.CoreUtils;
import org.apache.olingo.ext.proxy.utils.ProxyUtils;
-public class InvokerHandler<T, C> extends AbstractInvocationHandler {
+public class InvokerHandler<T, O> extends AbstractInvocationHandler {
private final URI baseURI;
@@ -95,10 +95,6 @@ public class InvokerHandler<T, C> extends AbstractInvocationHandler {
}
}
- public C compose() {
- return null;
- }
-
public Future<T> executeAsync() {
return service.getClient().getConfiguration().getExecutor().submit(new Callable<T>() {
@@ -249,25 +245,24 @@ public class InvokerHandler<T, C> extends AbstractInvocationHandler {
|| "select".equals(method.getName())) {
invokeSelfMethod(method, args);
return proxy;
- } else if ("compose".equals(method.getName()) && ArrayUtils.isEmpty(args)) {
-
- final EdmTypeInfo edmType = new EdmTypeInfo.Builder().
+ } else if ("operations".equals(method.getName()) && ArrayUtils.isEmpty(args)) {
+ final EdmTypeInfo returnType = new EdmTypeInfo.Builder().
setEdm(service.getClient().getCachedEdm()).setTypeExpression(operation.returnType()).build();
- final OperationInvocationHandler handler;
+ final URI prefixURI = URIUtils.buildFunctionInvokeURI(this.baseURI, parameters, getClient().getServiceVersion());
- final URI prefixURI = URIUtils.buildInvokeRequestURI(this.baseURI, parameters, getClient().getServiceVersion());
+ OperationInvocationHandler handler;
- if (edmType.isComplexType()) {
- if (edmType.isCollection()) {
+ if (returnType.isComplexType()) {
+ if (returnType.isCollection()) {
handler = OperationInvocationHandler.getInstance(new ComplexCollectionInvocationHandler(
- service, targetRef, getClient().newURIBuilder(prefixURI.toASCIIString())));
+ targetRef, service, getClient().newURIBuilder(prefixURI.toASCIIString())));
} else {
handler = OperationInvocationHandler.getInstance(ComplexInvocationHandler.getInstance(
targetRef, service, getClient().newURIBuilder(prefixURI.toASCIIString())));
}
} else {
- if (edmType.isCollection()) {
+ if (returnType.isCollection()) {
handler = OperationInvocationHandler.getInstance(new EntityCollectionInvocationHandler(
service, null, targetRef, null, getClient().newURIBuilder(prefixURI.toASCIIString())));
} else {
@@ -279,7 +274,6 @@ public class InvokerHandler<T, C> extends AbstractInvocationHandler {
return Proxy.newProxyInstance(
Thread.currentThread().getContextClassLoader(),
new Class<?>[] {operationRef}, handler);
-
} else if (isSelfMethod(method, args)) {
return invokeSelfMethod(method, args);
} else {
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c0b92cf0/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/OperationInvocationHandler.java
----------------------------------------------------------------------
diff --git a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/OperationInvocationHandler.java b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/OperationInvocationHandler.java
index 880f464..00630aa 100644
--- a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/OperationInvocationHandler.java
+++ b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/OperationInvocationHandler.java
@@ -139,7 +139,6 @@ final class OperationInvocationHandler extends AbstractInvocationHandler {
} else {
final Operation operation = method.getAnnotation(Operation.class);
if (operation != null) {
-
final Annotation[][] annotations = method.getParameterAnnotations();
final List<String> parameterNames;
final LinkedHashMap<Parameter, Object> parameters = new LinkedHashMap<Parameter, Object>();
@@ -175,25 +174,25 @@ final class OperationInvocationHandler extends AbstractInvocationHandler {
final Map<String, ODataValue> parameterValues = new LinkedHashMap<String, ODataValue>();
for (Map.Entry<Parameter, Object> parameter : parameters.entrySet()) {
-
if (!parameter.getKey().nullable() && parameter.getValue() == null) {
throw new IllegalArgumentException(
"Parameter " + parameter.getKey().name() + " is not nullable but a null value was provided");
}
- final EdmTypeInfo type = new EdmTypeInfo.Builder().
+ final EdmTypeInfo parameterType = new EdmTypeInfo.Builder().
setEdm(service.getClient().getCachedEdm()).setTypeExpression(parameter.getKey().type()).build();
final ODataValue paramValue = parameter.getValue() == null
? null
- : CoreUtils.getODataValue(service.getClient(), type, parameter.getValue());
-
+ : CoreUtils.getODataValue(service.getClient(), parameterType, parameter.getValue());
+
parameterValues.put(parameter.getKey().name(), paramValue);
}
return Proxy.newProxyInstance(
Thread.currentThread().getContextClassLoader(),
- new Class<?>[] {ClassUtils.getTypeClass(method.getGenericReturnType())}, new InvokerHandler(
+ new Class<?>[] {ClassUtils.getTypeClass(method.getGenericReturnType())},
+ new InvokerHandler(
edmOperation.getKey(),
parameterValues,
operation,
@@ -301,7 +300,6 @@ final class OperationInvocationHandler extends AbstractInvocationHandler {
return new AbstractMap.SimpleEntry<URI, EdmOperation>(boundOp.getTarget(), edmOperation);
}
- @SuppressWarnings("unchecked")
private Map.Entry<URI, EdmOperation> getCollectionBoundOperation(
final Operation operation, final List<String> parameterNames) {
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c0b92cf0/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/utils/CoreUtils.java
----------------------------------------------------------------------
diff --git a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/utils/CoreUtils.java b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/utils/CoreUtils.java
index aaf2d78..1fdea3f 100644
--- a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/utils/CoreUtils.java
+++ b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/utils/CoreUtils.java
@@ -479,7 +479,7 @@ public final class CoreUtils {
final Object complex = Proxy.newProxyInstance(
Thread.currentThread().getContextClassLoader(),
new Class<?>[] {getter.getReturnType()},
- ComplexInvocationHandler.getInstance(property.getName(), getter.getReturnType(), typeHandler));
+ ComplexInvocationHandler.getInstance(property.getName(), typeHandler, getter.getReturnType()));
populate(client, typeHandler, complex, Property.class, property.getValue().asComplex().iterator());
setPropertyValue(bean, getter, complex);
@@ -503,7 +503,7 @@ public final class CoreUtils {
final Object collItem = Proxy.newProxyInstance(
Thread.currentThread().getContextClassLoader(),
new Class<?>[] {collItemClass},
- ComplexInvocationHandler.getInstance(property.getName(), collItemClass, typeHandler));
+ ComplexInvocationHandler.getInstance(property.getName(), typeHandler, collItemClass));
populate(client, typeHandler, collItem, Property.class, value.asComplex().iterator());
collection.add(collItem);
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c0b92cf0/ext/pojogen-maven-plugin/src/main/java/org/apache/olingo/ext/pojogen/AbstractPOJOGenMojo.java
----------------------------------------------------------------------
diff --git a/ext/pojogen-maven-plugin/src/main/java/org/apache/olingo/ext/pojogen/AbstractPOJOGenMojo.java b/ext/pojogen-maven-plugin/src/main/java/org/apache/olingo/ext/pojogen/AbstractPOJOGenMojo.java
index aff8559..dda303a 100644
--- a/ext/pojogen-maven-plugin/src/main/java/org/apache/olingo/ext/pojogen/AbstractPOJOGenMojo.java
+++ b/ext/pojogen-maven-plugin/src/main/java/org/apache/olingo/ext/pojogen/AbstractPOJOGenMojo.java
@@ -294,8 +294,15 @@ public abstract class AbstractPOJOGenMojo extends AbstractMojo {
complexTypeNames.put(complex.getFullQualifiedName().toString(), typesPkg + "." + className);
objs.clear();
objs.put("complexType", complex);
- parseObj(typesBaseDir, typesPkg, "complexType", className + ".java", objs);
- parseObj(typesBaseDir, typesPkg, "complexCollection", className + "Collection.java", objs);
+
+ parseObj(typesBaseDir, typesPkg,
+ "complexType", className + ".java", objs);
+ parseObj(typesBaseDir, typesPkg,
+ "complexTypeComposableInvoker", className + "ComposableInvoker.java", objs);
+ parseObj(typesBaseDir, typesPkg,
+ "complexCollection", className + "Collection.java", objs);
+ parseObj(typesBaseDir, typesPkg,
+ "complexCollectionComposableInvoker", className + "CollectionComposableInvoker.java", objs);
}
for (EdmEntityType entity : schema.getEntityTypes()) {
@@ -332,8 +339,14 @@ public abstract class AbstractPOJOGenMojo extends AbstractMojo {
}
}
- parseObj(typesBaseDir, typesPkg, "entityType", className + ".java", objs);
- parseObj(typesBaseDir, typesPkg, "entityCollection", className + "Collection.java", objs);
+ parseObj(typesBaseDir, typesPkg,
+ "entityType", className + ".java", objs);
+ parseObj(typesBaseDir, typesPkg,
+ "entityComposableInvoker", className + "ComposableInvoker.java", objs);
+ parseObj(typesBaseDir, typesPkg,
+ "entityCollection", className + "Collection.java", objs);
+ parseObj(typesBaseDir, typesPkg,
+ "entityCollectionComposableInvoker", className + "CollectionComposableInvoker.java", objs);
}
// write container and top entity sets into the base package
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c0b92cf0/ext/pojogen-maven-plugin/src/main/resources/complexCollectionComposableInvoker.vm
----------------------------------------------------------------------
diff --git a/ext/pojogen-maven-plugin/src/main/resources/complexCollectionComposableInvoker.vm b/ext/pojogen-maven-plugin/src/main/resources/complexCollectionComposableInvoker.vm
new file mode 100644
index 0000000..7ab133c
--- /dev/null
+++ b/ext/pojogen-maven-plugin/src/main/resources/complexCollectionComposableInvoker.vm
@@ -0,0 +1,58 @@
+#*
+ * 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 ${package};
+
+//CHECKSTYLE:OFF (Maven checkstyle)
+import org.apache.olingo.client.api.http.HttpMethod;
+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;
+#foreach($ns in $namespaces)
+import #if($basePackage)${basePackage}.#end${ns}.*;
+#end
+
+import org.apache.olingo.commons.api.edm.geo.Geospatial;
+import org.apache.olingo.commons.api.edm.geo.GeospatialCollection;
+import org.apache.olingo.commons.api.edm.geo.LineString;
+import org.apache.olingo.commons.api.edm.geo.MultiLineString;
+import org.apache.olingo.commons.api.edm.geo.MultiPoint;
+import org.apache.olingo.commons.api.edm.geo.MultiPolygon;
+import org.apache.olingo.commons.api.edm.geo.Point;
+import org.apache.olingo.commons.api.edm.geo.Polygon;
+import java.math.BigDecimal;
+import java.net.URI;
+import java.util.UUID;
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.Calendar;
+import javax.xml.datatype.Duration;
+//CHECKSTYLE:ON (Maven checkstyle)
+
+#set ( $javaComplexType = $utility.getJavaType($complexType) )
+
+public interface $utility.capitalize($complexType.Name)CollectionComposableInvoker extends
+ org.apache.olingo.ext.proxy.api.StructuredCollectionComposableInvoker<${javaComplexType}Collection, ${javaComplexType}Collection.Operations> {
+
+ @Override
+ $utility.capitalize($complexType.Name)CollectionComposableInvoker select(String... select);
+
+ @Override
+ $utility.capitalize($complexType.Name)CollectionComposableInvoker expand(String... expand);
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c0b92cf0/ext/pojogen-maven-plugin/src/main/resources/complexTypeComposableInvoker.vm
----------------------------------------------------------------------
diff --git a/ext/pojogen-maven-plugin/src/main/resources/complexTypeComposableInvoker.vm b/ext/pojogen-maven-plugin/src/main/resources/complexTypeComposableInvoker.vm
new file mode 100644
index 0000000..0678a38
--- /dev/null
+++ b/ext/pojogen-maven-plugin/src/main/resources/complexTypeComposableInvoker.vm
@@ -0,0 +1,48 @@
+#*
+ * 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 ${package};
+
+//CHECKSTYLE:OFF (Maven checkstyle)
+import org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty;
+import org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty;
+import org.apache.olingo.ext.proxy.api.annotations.Namespace;
+import org.apache.olingo.ext.proxy.api.annotations.ComplexType;
+import org.apache.olingo.ext.proxy.api.annotations.EntitySet;
+import org.apache.olingo.ext.proxy.api.annotations.Property;
+import org.apache.olingo.ext.proxy.api.annotations.NavigationProperty;
+import org.apache.olingo.ext.proxy.api.AbstractOpenType;
+import org.apache.olingo.ext.proxy.api.AbstractEntitySet;
+import org.apache.olingo.ext.proxy.api.Annotatable;
+#foreach($ns in $namespaces)
+import #if($basePackage)${basePackage}.#end${ns}.*;
+#end
+
+import org.apache.olingo.commons.api.edm.geo.Geospatial;
+import org.apache.olingo.commons.api.edm.geo.GeospatialCollection;
+import org.apache.olingo.commons.api.edm.geo.LineString;
+import org.apache.olingo.commons.api.edm.geo.MultiLineString;
+import org.apache.olingo.commons.api.edm.geo.MultiPoint;
+import org.apache.olingo.commons.api.edm.geo.MultiPolygon;
+import org.apache.olingo.commons.api.edm.geo.Point;
+import org.apache.olingo.commons.api.edm.geo.Polygon;
+//CHECKSTYLE:ON (Maven checkstyle)
+
+#parse( "${odataVersion}/complexTypeComposableInvoker.vm" )
+
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c0b92cf0/ext/pojogen-maven-plugin/src/main/resources/container.vm
----------------------------------------------------------------------
diff --git a/ext/pojogen-maven-plugin/src/main/resources/container.vm b/ext/pojogen-maven-plugin/src/main/resources/container.vm
index 827de54..defb9e1 100644
--- a/ext/pojogen-maven-plugin/src/main/resources/container.vm
+++ b/ext/pojogen-maven-plugin/src/main/resources/container.vm
@@ -84,9 +84,17 @@ public interface $utility.capitalize($container.Name) extends PersistenceManager
*##else#*
*##if(${function.ReturnType.Type.Kind} == "ENTITY" || ${function.ReturnType.Type.Kind} == "COMPLEX")#*
*##if($function.getReturnType().isCollection())#*
- *##set($returnType = "org.apache.olingo.ext.proxy.api.StructuredCollection${composable}")#*
+ *##if($function.Composable)#*
+ *##set($returnType = "${defaultType}ComposableInvoker")#*
+ *##{else}#*
+ *##set($returnType = "org.apache.olingo.ext.proxy.api.StructuredCollectionInvoker<$defaultType>")#*
+ *##end#*
*##{else}#*
- *##set($returnType = "org.apache.olingo.ext.proxy.api.Structured${composable}")#*
+ *##if($function.Composable)#*
+ *##set($returnType = "${defaultType}ComposableInvoker")#*
+ *##{else}#*
+ *##set($returnType = "org.apache.olingo.ext.proxy.api.StructuredInvoker<$defaultType>")#*
+ *##end#*
*##end#*
*##{else}#*
*##if($function.getReturnType().isCollection())#*
@@ -124,19 +132,14 @@ public interface $utility.capitalize($container.Name) extends PersistenceManager
#if($action)
#if($action.ReturnType)#*
*##set($defaultType = $utility.getJavaType($action.ReturnType.Type, $action.ReturnType.Collection))#*
- *##if($action.Composable)#*
- *##set($composable = "ComposableInvoker<$defaultType, ${defaultType}.Operations>")#*
- *##{else}#*
- *##set($composable = "Invoker<$defaultType>")#*
- *##end#*
*##if(!($action.getReturnType().isCollection() || ${action.ReturnType.Type.Kind} == "ENTITY" || ${action.ReturnType.Type.Kind} == "COMPLEX" || $utility.isStreamType($action.ReturnType.Type)))#*
*##set($returnType = "org.apache.olingo.ext.proxy.api.Invoker<$defaultType>")#*
*##else#*
*##if(${action.ReturnType.Type.Kind} == "ENTITY" || ${action.ReturnType.Type.Kind} == "COMPLEX")#*
*##if($action.getReturnType().isCollection())#*
- *##set($returnType = "org.apache.olingo.ext.proxy.api.StructuredCollection${composable}")#*
+ *##set($returnType = "org.apache.olingo.ext.proxy.api.StructuredCollectionInvoker<$defaultType>")#*
*##{else}#*
- *##set($returnType = "org.apache.olingo.ext.proxy.api.Structured${composable}")#*
+ *##set($returnType = "org.apache.olingo.ext.proxy.api.StructuredInvoker<$defaultType>")#*
*##end#*
*##{else}#*
*##if($action.getReturnType().isCollection())#*
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c0b92cf0/ext/pojogen-maven-plugin/src/main/resources/entityCollectionComposableInvoker.vm
----------------------------------------------------------------------
diff --git a/ext/pojogen-maven-plugin/src/main/resources/entityCollectionComposableInvoker.vm b/ext/pojogen-maven-plugin/src/main/resources/entityCollectionComposableInvoker.vm
new file mode 100644
index 0000000..a5ef494
--- /dev/null
+++ b/ext/pojogen-maven-plugin/src/main/resources/entityCollectionComposableInvoker.vm
@@ -0,0 +1,58 @@
+#*
+ * 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 ${package};
+
+//CHECKSTYLE:OFF (Maven checkstyle)
+import org.apache.olingo.client.api.http.HttpMethod;
+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;
+#foreach($ns in $namespaces)
+import #if($basePackage)${basePackage}.#end${ns}.*;
+#end
+
+import org.apache.olingo.commons.api.edm.geo.Geospatial;
+import org.apache.olingo.commons.api.edm.geo.GeospatialCollection;
+import org.apache.olingo.commons.api.edm.geo.LineString;
+import org.apache.olingo.commons.api.edm.geo.MultiLineString;
+import org.apache.olingo.commons.api.edm.geo.MultiPoint;
+import org.apache.olingo.commons.api.edm.geo.MultiPolygon;
+import org.apache.olingo.commons.api.edm.geo.Point;
+import org.apache.olingo.commons.api.edm.geo.Polygon;
+import java.math.BigDecimal;
+import java.net.URI;
+import java.util.UUID;
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.Calendar;
+import javax.xml.datatype.Duration;
+//CHECKSTYLE:ON (Maven checkstyle)
+
+#set ( $javaEntityType = $utility.getJavaType($entityType) )
+
+public interface $utility.capitalize($entityType.Name)CollectionComposableInvoker extends
+ org.apache.olingo.ext.proxy.api.StructuredCollectionComposableInvoker<${javaEntityType}Collection, ${javaEntityType}Collection.Operations> {
+
+ @Override
+ $utility.capitalize($entityType.Name)CollectionComposableInvoker select(String... select);
+
+ @Override
+ $utility.capitalize($entityType.Name)CollectionComposableInvoker expand(String... expand);
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c0b92cf0/ext/pojogen-maven-plugin/src/main/resources/entityComposableInvoker.vm
----------------------------------------------------------------------
diff --git a/ext/pojogen-maven-plugin/src/main/resources/entityComposableInvoker.vm b/ext/pojogen-maven-plugin/src/main/resources/entityComposableInvoker.vm
new file mode 100644
index 0000000..3853e6d
--- /dev/null
+++ b/ext/pojogen-maven-plugin/src/main/resources/entityComposableInvoker.vm
@@ -0,0 +1,163 @@
+#*
+ * 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.
+ *#
+#set( $clsSuffix = ".class" )
+package ${package};
+//CHECKSTYLE:OFF (Maven checkstyle)
+import org.apache.olingo.client.api.http.HttpMethod;
+import org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty;
+import org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty;
+import org.apache.olingo.ext.proxy.api.annotations.Namespace;
+import org.apache.olingo.ext.proxy.api.annotations.EntityType;
+import org.apache.olingo.ext.proxy.api.annotations.EntitySet;
+import org.apache.olingo.ext.proxy.api.annotations.Key;
+import org.apache.olingo.ext.proxy.api.annotations.KeyRef;
+import org.apache.olingo.ext.proxy.api.annotations.NavigationProperty;
+import org.apache.olingo.ext.proxy.api.annotations.Property;
+import org.apache.olingo.ext.proxy.api.annotations.Operation;
+import org.apache.olingo.ext.proxy.api.annotations.Parameter;
+import org.apache.olingo.ext.proxy.api.AbstractOpenType;
+import org.apache.olingo.ext.proxy.api.OperationType;
+import org.apache.olingo.ext.proxy.api.AbstractEntitySet;
+import org.apache.olingo.commons.api.edm.constants.EdmContentKind;
+import org.apache.olingo.client.api.edm.ConcurrencyMode;
+#foreach($ns in $namespaces)
+import #if($basePackage)${basePackage}.#end${ns}.*;
+#end
+
+import org.apache.olingo.commons.api.edm.geo.Geospatial;
+import org.apache.olingo.commons.api.edm.geo.GeospatialCollection;
+import org.apache.olingo.commons.api.edm.geo.LineString;
+import org.apache.olingo.commons.api.edm.geo.MultiLineString;
+import org.apache.olingo.commons.api.edm.geo.MultiPoint;
+import org.apache.olingo.commons.api.edm.geo.MultiPolygon;
+import org.apache.olingo.commons.api.edm.geo.Point;
+import org.apache.olingo.commons.api.edm.geo.Polygon;
+import java.util.concurrent.Future;
+//CHECKSTYLE:ON (Maven checkstyle)
+
+public interface $utility.capitalize($entityType.Name)ComposableInvoker
+ extends org.apache.olingo.ext.proxy.api.StructuredComposableInvoker<$utility.capitalize($entityType.Name), ${utility.capitalize($entityType.Name)}.Operations>
+ #{if}( $entityType.isOpenType() ),AbstractOpenType#end {
+
+ @Override
+ $utility.capitalize($entityType.Name)ComposableInvoker select(String... select);
+
+ @Override
+ $utility.capitalize($entityType.Name)ComposableInvoker expand(String... expand);
+
+#set( $keys = [] )
+#foreach($key in $entityType.KeyPropertyRefs)
+ #if(!$keys.add($key.KeyPropertyName)) #stop #end
+#end
+
+#set( $contained = [] )
+
+#foreach($propertyName in $entityType.PropertyNames)
+ #set($property = $entityType.getProperty($propertyName))
+ #set($fcprops = $utility.getFcProperties($property) )
+ #if($keys.contains($property.Name))@Key#end
+
+ #if($property.Type.FullQualifiedName.toString().equals("Edm.Stream"))#*
+ *##set( $returnType = "org.apache.olingo.ext.proxy.api.EdmStreamValue" )#*
+ *##else#*
+ *##set( $returnType = $utility.getJavaType($property.Type, $property.Collection) )#*
+ *##end
+
+ @org.apache.olingo.ext.proxy.api.annotations.Property(name = "$property.Name",
+ type = "$property.Type.FullQualifiedName.toString()",
+ nullable = $property.Nullable,
+ defaultValue = "#if($property.getDefaultValue())$property.getDefaultValue()#end",
+ maxLenght = #if($property.getMaxLength() && !$property.getMaxLength().equalsIgnoreCase("max"))$property.getMaxLength()#{else}Integer.MAX_VALUE#end,
+ fixedLenght = #if($property.isFixedLength())$property.isFixedLength()#{else}false#end,
+ precision = #if($property.getPrecision())$property.getPrecision()#{else}0#end,
+ scale = #if($property.getScale())$property.getScale()#{else}0#end,
+ unicode = #if($property.isUnicode())$property.isUnicode()#{else}false#end,
+ collation = "#if($property.getCollation())$property.getCollation()#end",
+ srid = "#if($property.getSRID())$property.getSRID()#end",
+ concurrencyMode = #if($property.getConcurrencyMode())ConcurrencyMode.$property.getConcurrencyMode()#{else}ConcurrencyMode.None#end,
+ fcSourcePath = "#if($fcprops.containsKey("fcSourcePath"))$fcprops.get("fcSourcePath")#end",
+ fcTargetPath = "#if($fcprops.containsKey("fcTargetPath"))$fcprops.get("fcTargetPath")#end",
+ fcContentKind = #if($fcprops.containsKey("fcContentKind"))EdmContentKind.$fcprops.get("fcContentKind")#{else}EdmContentKind.text#end,
+ fcNSPrefix = "#if($fcprops.containsKey("fcNSPrefix"))$fcprops.get("fcNSPrefix")#end",
+ fcNSURI = "#if($fcprops.containsKey("fcNSURI"))$fcprops.get("fcNSURI")#end",
+ fcKeepInContent = #if($fcprops.containsKey("fcKeepInContent"))$fcprops.get("fcKeepInContent")#{else}false#end)
+ $returnType get$utility.capitalize($property.Name)();
+
+ void set$utility.capitalize($property.Name)($returnType _$utility.uncapitalize($property.Name));
+#end
+
+#foreach($propertyName in $entityType.NavigationPropertyNames)
+ #set($property = $entityType.getNavigationProperty($propertyName))
+ #set($type = $utility.getNavigationType($property))
+ #set($binding = $utility.getNavigationBindingDetails($entityType, $property))
+
+ #if($property.containsTarget() && $property.Collection)#*
+ *##set( $contains = $contained.add($property) )
+ #else#*
+ *#@org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "$property.Name",
+ type = "$type",
+ targetSchema = "$binding.Schema.Namespace",
+ targetContainer = "#if($binding.Container)$binding.Container.Name#end",
+ targetEntitySet = "#if($binding.EntitySet)$binding.EntitySet.Name#end",
+ containsTarget = $property.containsTarget())
+ $utility.getJavaType($type, $property.Collection) get$utility.capitalize($property.Name)();
+
+ void set$utility.capitalize($property.Name)($utility.getJavaType($type, $property.Collection) _$utility.uncapitalize($property.Name));
+ #end
+#end
+
+#if($entityType.hasStream())
+ void uploadStream(org.apache.olingo.ext.proxy.api.EdmStreamValue stream);
+
+ org.apache.olingo.ext.proxy.api.EdmStreamValue loadStream();
+#end
+
+#foreach($property in $contained)
+ #if( !$entityType.BaseType.getNavigationProperty($property.Name))
+ #set( $pkgname = "${package}.${utility.capitalize($entityType.Name)}.$utility.capitalize($property.Name)" )
+ @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "$property.Name",
+ type = "$type",
+ targetSchema = "$binding.Schema.Namespace",
+ targetContainer = "#if($binding.Container)$binding.Container.Name#end",
+ targetEntitySet = "#if($binding.EntitySet)$binding.EntitySet.Name#end",
+ containsTarget = $property.containsTarget())
+ $pkgname get$utility.capitalize($property.Name)();
+ void set$utility.capitalize($property.Name)($pkgname _$utility.uncapitalize($property.Name));
+
+ #set( $keys = $utility.getEntityKeyType($property) )
+ #if( $keys.size() > 1 )
+ #set( $type = $utility.getEdmType($property).EntityType.Name + "Key" )
+ #elseif( $keys.size() == 1 )
+ #set( $type = $keys.values().iterator().next() )
+ #else
+ #set( $type = "" )
+ #end
+
+ #set ( $javaEntityType = $utility.getJavaType($property.Type) )
+
+ @org.apache.olingo.ext.proxy.api.annotations.EntitySet(name = "$property.Name", contained = true)
+ interface $utility.capitalize($property.Name)
+ extends org.apache.olingo.ext.proxy.api.EntitySet<$javaEntityType, ${javaEntityType}Collection>,
+ org.apache.olingo.ext.proxy.api.StructuredCollectionQuery<$utility.capitalize($property.Name)>,
+ AbstractEntitySet<$javaEntityType, $type, ${javaEntityType}Collection> {
+ }
+
+ #end
+#end
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c0b92cf0/ext/pojogen-maven-plugin/src/main/resources/operation.vm
----------------------------------------------------------------------
diff --git a/ext/pojogen-maven-plugin/src/main/resources/operation.vm b/ext/pojogen-maven-plugin/src/main/resources/operation.vm
index d8bdae8..c2376b7 100644
--- a/ext/pojogen-maven-plugin/src/main/resources/operation.vm
+++ b/ext/pojogen-maven-plugin/src/main/resources/operation.vm
@@ -25,19 +25,22 @@
#foreach($operation in $functions)
#if($operation.ReturnType)#*
*##set($defaultType = $utility.getJavaType($operation.ReturnType.Type, $operation.ReturnType.Collection))#*
- *##if($operationComposable)#*
- *##set($composable = "ComposableInvoker<$defaultType, ${defaultType}.Operations>")#*
- *##{else}#*
- *##set($composable = "Invoker<$defaultType>")#*
- *##end#*
*##if(!($operation.getReturnType().isCollection() || ${operation.ReturnType.Type.Kind} == "ENTITY" || ${operation.ReturnType.Type.Kind} == "COMPLEX" || $utility.isStreamType($operation.ReturnType.Type)))#*
*##set($returnType = "org.apache.olingo.ext.proxy.api.Invoker<$defaultType>")#*
*##else#*
*##if(${operation.ReturnType.Type.Kind} == "ENTITY" || ${operation.ReturnType.Type.Kind} == "COMPLEX")#*
*##if($operation.getReturnType().isCollection())#*
- *##set($returnType = "org.apache.olingo.ext.proxy.api.StructuredCollection${composable}")#*
+ *##if($operationComposable)#*
+ *##set($returnType = "${defaultType}ComposableInvoker")#*
+ *##{else}#*
+ *##set($returnType = "org.apache.olingo.ext.proxy.api.StructuredCollectionInvoker<$defaultType>")#*
+ *##end#*
*##{else}#*
- *##set($returnType = "org.apache.olingo.ext.proxy.api.Structured${composable}")#*
+ *##if($operationComposable)#*
+ *##set($returnType = "${defaultType}ComposableInvoker")#*
+ *##{else}#*
+ *##set($returnType = "org.apache.olingo.ext.proxy.api.StructuredInvoker<$defaultType>")#*
+ *##end#*
*##end#*
*##{else}#*
*##if($operation.getReturnType().isCollection())#*
@@ -74,19 +77,14 @@
#foreach($operation in $actions)
#if($operation.ReturnType)#*
*##set($defaultType = $utility.getJavaType($operation.ReturnType.Type, $operation.ReturnType.Collection))#*
- *##if($operation.Composable)#*
- *##set($composable = "ComposableInvoker<$defaultType, ${defaultType}.Operations>")#*
- *##{else}#*
- *##set($composable = "Invoker<$defaultType>")#*
- *##end#*
*##if(!($operation.getReturnType().isCollection() || ${operation.ReturnType.Type.Kind} == "ENTITY" || ${operation.ReturnType.Type.Kind} == "COMPLEX" || $utility.isStreamType($operation.ReturnType.Type)))#*
*##set($returnType = "org.apache.olingo.ext.proxy.api.Invoker<$defaultType>")#*
*##else#*
*##if(${operation.ReturnType.Type.Kind} == "ENTITY" || ${operation.ReturnType.Type.Kind} == "COMPLEX")#*
*##if($operation.getReturnType().isCollection())#*
- *##set($returnType = "org.apache.olingo.ext.proxy.api.StructuredCollection${composable}")#*
+ *##set($returnType = "org.apache.olingo.ext.proxy.api.StructuredCollectionInvoker<$defaultType>")#*
*##{else}#*
- *##set($returnType = "org.apache.olingo.ext.proxy.api.Structured${composable}")#*
+ *##set($returnType = "org.apache.olingo.ext.proxy.api.StructuredInvoker<$defaultType>")#*
*##end#*
*##{else}#*
*##if($operation.getReturnType().isCollection())#*
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c0b92cf0/ext/pojogen-maven-plugin/src/main/resources/v30/complexTypeComposableInvoker.vm
----------------------------------------------------------------------
diff --git a/ext/pojogen-maven-plugin/src/main/resources/v30/complexTypeComposableInvoker.vm b/ext/pojogen-maven-plugin/src/main/resources/v30/complexTypeComposableInvoker.vm
new file mode 100644
index 0000000..8e86d43
--- /dev/null
+++ b/ext/pojogen-maven-plugin/src/main/resources/v30/complexTypeComposableInvoker.vm
@@ -0,0 +1,51 @@
+#*
+ * 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.
+ *#
+public interface $utility.capitalize($complexType.Name)ComposableInvoker
+ extends org.apache.olingo.ext.proxy.api.StructuredComposableInvoker<$utility.capitalize($complexType.Name), ${utility.capitalize($complexType.Name)}.Operations> {
+
+ @Override
+ $utility.capitalize($complexType.Name)ComposableInvoker select(String... select);
+
+ @Override
+ $utility.capitalize($complexType.Name)ComposableInvoker expand(String... expand);
+
+#set( $complexProps = [] )
+#foreach($propertyName in $complexType.PropertyNames)
+ #set($property = $complexType.getProperty($propertyName))#*
+
+ *##if($property.Type.FullQualifiedName.toString().equals("Edm.Stream"))#*
+ *##set( $returnType = "org.apache.olingo.ext.proxy.api.EdmStreamValue" )#*
+ *##else#*
+ *##set( $returnType = $utility.getJavaType($property.Type, $property.Collection) )#*
+ *##end
+
+
+ @org.apache.olingo.ext.proxy.api.annotations.Property(
+ name = "$property.Name",
+ type = "$property.Type.FullQualifiedName.toString()",
+ nullable = $property.Nullable)
+ $returnType get$utility.capitalize($property.Name)();
+
+ void set$utility.capitalize($property.Name)($returnType _$utility.uncapitalize($property.Name));
+
+ #if($utility.isComplex($property.Type.FullQualifiedName))#*
+ *##set( $adding = $complexProps.add($property) )
+ #end
+
+#end
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c0b92cf0/ext/pojogen-maven-plugin/src/main/resources/v40/complexTypeComposableInvoker.vm
----------------------------------------------------------------------
diff --git a/ext/pojogen-maven-plugin/src/main/resources/v40/complexTypeComposableInvoker.vm b/ext/pojogen-maven-plugin/src/main/resources/v40/complexTypeComposableInvoker.vm
new file mode 100644
index 0000000..5467a5a
--- /dev/null
+++ b/ext/pojogen-maven-plugin/src/main/resources/v40/complexTypeComposableInvoker.vm
@@ -0,0 +1,115 @@
+#*
+ * 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.
+ *#
+public interface $utility.capitalize($complexType.Name)ComposableInvoker
+ extends org.apache.olingo.ext.proxy.api.StructuredComposableInvoker<$utility.capitalize($complexType.Name), ${utility.capitalize($complexType.Name)}.Operations>
+ #{if}( $complexType.isOpenType() ),AbstractOpenType#end {
+
+ @Override
+ $utility.capitalize($complexType.Name)ComposableInvoker select(String... select);
+
+ @Override
+ $utility.capitalize($complexType.Name)ComposableInvoker expand(String... expand);
+
+#set( $complexProps = [] )
+#set( $contained = [] )
+#foreach($propertyName in $complexType.PropertyNames)
+ #set($property = $complexType.getProperty($propertyName))#*
+
+ *##if($property.Type.FullQualifiedName.toString().equals("Edm.Stream"))#*
+ *##set( $returnType = "org.apache.olingo.ext.proxy.api.EdmStreamValue" )#*
+ *##else#*
+ *##set( $returnType = $utility.getJavaType($property.Type, $property.Collection) )#*
+ *##end
+
+ @org.apache.olingo.ext.proxy.api.annotations.Property(name = "$property.Name",
+ type = "$property.Type.getFullQualifiedName().toString()",
+ nullable = $property.Nullable,
+ defaultValue = "#if($property.getDefaultValue())$property.getDefaultValue()#end",
+ maxLenght = #if($property.getMaxLength() && !$property.getMaxLength().equalsIgnoreCase("max"))$property.getMaxLength()#{else}Integer.MAX_VALUE#end,
+ fixedLenght = #if($property.isFixedLength())$property.isFixedLength()#{else}false#end,
+ precision = #if($property.getPrecision())$property.getPrecision()#{else}0#end,
+ scale = #if($property.getScale())$property.getScale()#{else}0#end,
+ unicode = #if($property.isUnicode())$property.isUnicode()#{else}false#end,
+ collation = "#if($property.getCollation())$property.getCollation()#end",
+ srid = "#if($property.getSRID())$property.getSRID()#end")
+ $returnType get$utility.capitalize($property.Name)();
+
+ void set$utility.capitalize($property.Name)($returnType _$utility.uncapitalize($property.Name));
+
+ #if($utility.isComplex($property.Type.FullQualifiedName))#*
+ *##set( $adding = $complexProps.add($property) )
+ #end
+
+#end
+
+#foreach($propertyName in $complexType.NavigationPropertyNames)
+ #set($property = $complexType.getNavigationProperty($propertyName))
+ #set( $type = $utility.getNavigationType($property) )
+ #set( $binding = $utility.getNavigationBindingDetails($complexType, $property) )
+
+ #if($property.containsTarget() && $property.Collection)#*
+ *##set( $contains = $contained.add($property) )
+ #else#*
+ *#@org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "$property.Name",
+ type = "$type",
+ targetSchema = "$binding.Schema.Namespace",
+ targetContainer = "#if($binding.Container)$binding.Container.Name#end",
+ targetEntitySet = "#if($binding.EntitySet)$binding.EntitySet.Name#end")
+ $utility.getJavaType($type, $property.Collection) get$utility.capitalize($property.Name)();
+
+ void set$utility.capitalize($property.Name)($utility.getJavaType($type, $property.Collection) _$utility.uncapitalize($property.Name));
+ #end
+#end
+
+#foreach($property in $contained)
+ #if( !$entityType.BaseType.getNavigationProperty($property.Name))
+ #set( $pkgname = "${package}.${utility.capitalize($entityType.Name)}.$utility.capitalize($property.Name)" )
+ @NavigationProperty(name = "$property.Name",
+ type = "$type",
+ targetSchema = "$binding.Schema.Namespace",
+ targetContainer = "#if($binding.Container)$binding.Container.Name#end",
+ targetEntitySet = "#if($binding.EntitySet)$binding.EntitySet.Name#end",
+ containsTarget = $property.containsTarget())
+ $pkgname get$utility.capitalize($property.Name)();
+ void set$utility.capitalize($property.Name)($pkgname _$utility.uncapitalize($property.Name));
+
+ #set( $keys = $utility.getEntityKeyType($property) )
+ #if( $keys.size() > 1 )
+ #set( $type = $utility.getEdmType($property).EntityType.Name + "Key" )
+ #elseif( $keys.size() == 1 )
+ #set( $type = $keys.values().iterator().next() )
+ #else
+ #set( $type = "" )
+ #end
+
+ @EntitySet(name = "$property.Name", contained = true)
+ interface $utility.capitalize($property.Name)
+ extends AbstractEntitySet<$utility.getJavaType($property.Type), $type, $utility.getJavaType($property.Type)Collection> {
+
+ #foreach( $dos in $utility.getDescendantsOrSelf($utility.getEdmType($property)) )
+ #set( $djt = $utility.getJavaType($dos) )
+ #set( $sIdx = $djt.lastIndexOf('.') + 1 )
+ $djt new$djt.substring($sIdx)();
+ ${djt}Collection new$djt.substring($sIdx)Collection();
+ #end
+ }
+
+ #end
+#end
+
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c0b92cf0/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/AliasesCollectionComposableInvoker.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/AliasesCollectionComposableInvoker.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/AliasesCollectionComposableInvoker.java
new file mode 100644
index 0000000..5339121
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/AliasesCollectionComposableInvoker.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.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types;
+
+//CHECKSTYLE:OFF (Maven checkstyle)
+
+
+public interface AliasesCollectionComposableInvoker extends
+ org.apache.olingo.ext.proxy.api.StructuredCollectionComposableInvoker<org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.AliasesCollection, org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.AliasesCollection.Operations> {
+
+ @Override
+ AliasesCollectionComposableInvoker select(String... select);
+
+ @Override
+ AliasesCollectionComposableInvoker expand(String... expand);
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c0b92cf0/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/AliasesComposableInvoker.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/AliasesComposableInvoker.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/AliasesComposableInvoker.java
new file mode 100644
index 0000000..980ff72
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/AliasesComposableInvoker.java
@@ -0,0 +1,45 @@
+/*
+ * 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.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types;
+
+//CHECKSTYLE:OFF (Maven checkstyle)
+
+
+public interface AliasesComposableInvoker
+ extends org.apache.olingo.ext.proxy.api.StructuredComposableInvoker<Aliases, Aliases.Operations> {
+
+ @Override
+ AliasesComposableInvoker select(String... select);
+
+ @Override
+ AliasesComposableInvoker expand(String... expand);
+
+
+
+ @org.apache.olingo.ext.proxy.api.annotations.Property(
+ name = "AlternativeNames",
+ type = "Edm.String",
+ nullable = false)
+ org.apache.olingo.ext.proxy.api.PrimitiveCollection<java.lang.String> getAlternativeNames();
+
+ void setAlternativeNames(org.apache.olingo.ext.proxy.api.PrimitiveCollection<java.lang.String> _alternativeNames);
+
+
+
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c0b92cf0/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/AllSpatialCollectionTypesCollectionComposableInvoker.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/AllSpatialCollectionTypesCollectionComposableInvoker.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/AllSpatialCollectionTypesCollectionComposableInvoker.java
new file mode 100644
index 0000000..6a3d10c
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/AllSpatialCollectionTypesCollectionComposableInvoker.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.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types;
+
+//CHECKSTYLE:OFF (Maven checkstyle)
+
+
+public interface AllSpatialCollectionTypesCollectionComposableInvoker extends
+ org.apache.olingo.ext.proxy.api.StructuredCollectionComposableInvoker<org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.AllSpatialCollectionTypesCollection, org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.AllSpatialCollectionTypesCollection.Operations> {
+
+ @Override
+ AllSpatialCollectionTypesCollectionComposableInvoker select(String... select);
+
+ @Override
+ AllSpatialCollectionTypesCollectionComposableInvoker expand(String... expand);
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c0b92cf0/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/AllSpatialCollectionTypesComposableInvoker.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/AllSpatialCollectionTypesComposableInvoker.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/AllSpatialCollectionTypesComposableInvoker.java
new file mode 100644
index 0000000..6a4ca8c
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/AllSpatialCollectionTypesComposableInvoker.java
@@ -0,0 +1,64 @@
+/*
+ * 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.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types;
+//CHECKSTYLE:OFF (Maven checkstyle)
+import org.apache.olingo.ext.proxy.api.annotations.Key;
+import org.apache.olingo.commons.api.edm.constants.EdmContentKind;
+import org.apache.olingo.client.api.edm.ConcurrencyMode;
+//CHECKSTYLE:ON (Maven checkstyle)
+
+public interface AllSpatialCollectionTypesComposableInvoker
+ extends org.apache.olingo.ext.proxy.api.StructuredComposableInvoker<AllSpatialCollectionTypes, AllSpatialCollectionTypes.Operations>
+ {
+
+ @Override
+ AllSpatialCollectionTypesComposableInvoker select(String... select);
+
+ @Override
+ AllSpatialCollectionTypesComposableInvoker expand(String... expand);
+
+
+
+ @Key
+
+ @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Id",
+ type = "Edm.Int32",
+ nullable = false,
+ defaultValue = "",
+ maxLenght = Integer.MAX_VALUE,
+ fixedLenght = false,
+ precision = 0,
+ scale = 0,
+ unicode = true,
+ collation = "",
+ srid = "",
+ concurrencyMode = ConcurrencyMode.None,
+ fcSourcePath = "",
+ fcTargetPath = "",
+ fcContentKind = EdmContentKind.text,
+ fcNSPrefix = "",
+ fcNSURI = "",
+ fcKeepInContent = false)
+ java.lang.Integer getId();
+
+ void setId(java.lang.Integer _id);
+
+
+
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c0b92cf0/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/AllSpatialCollectionTypes_SimpleCollectionComposableInvoker.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/AllSpatialCollectionTypes_SimpleCollectionComposableInvoker.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/AllSpatialCollectionTypes_SimpleCollectionComposableInvoker.java
new file mode 100644
index 0000000..be255f0
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v3/actionoverloading/microsoft/test/odata/services/astoriadefaultservice/types/AllSpatialCollectionTypes_SimpleCollectionComposableInvoker.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.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types;
+
+//CHECKSTYLE:OFF (Maven checkstyle)
+
+
+public interface AllSpatialCollectionTypes_SimpleCollectionComposableInvoker extends
+ org.apache.olingo.ext.proxy.api.StructuredCollectionComposableInvoker<org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.AllSpatialCollectionTypes_SimpleCollection, org.apache.olingo.fit.proxy.v3.actionoverloading.microsoft.test.odata.services.astoriadefaultservice.types.AllSpatialCollectionTypes_SimpleCollection.Operations> {
+
+ @Override
+ AllSpatialCollectionTypes_SimpleCollectionComposableInvoker select(String... select);
+
+ @Override
+ AllSpatialCollectionTypes_SimpleCollectionComposableInvoker expand(String... expand);
+}