This is an automated email from the ASF dual-hosted git repository. ramyav pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/olingo-odata4.git
The following commit(s) were added to refs/heads/master by this push: new c625137 [OLINGO-1479]Allow system query option select and expand for POST request c625137 is described below commit c62513795e113f38d55951eaaf73dce583c663ac Author: ramya vasanth <ramya.vasa...@sap.com> AuthorDate: Fri Sep 18 13:47:39 2020 +0530 [OLINGO-1479]Allow system query option select and expand for POST request --- .../olingo/server/core/uri/validator/UriValidator.java | 3 ++- .../server/tecsvc/processor/TechnicalActionProcessor.java | 1 + .../server/core/uri/validator/UriValidatorTest.java | 15 ++++++++++++--- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/validator/UriValidator.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/validator/UriValidator.java index 3aedfc0..f6b364b 100644 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/validator/UriValidator.java +++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/validator/UriValidator.java @@ -408,7 +408,8 @@ public class UriValidator { for (SystemQueryOption queryOption : options) { isSelectOrExpand = ((queryOption.getKind() == SystemQueryOptionKind.EXPAND) || (queryOption.getKind() == SystemQueryOptionKind.SELECT)) && - (httpMethod == HttpMethod.PUT || httpMethod == HttpMethod.PATCH); + (httpMethod == HttpMethod.PUT || httpMethod == HttpMethod.PATCH || + httpMethod == HttpMethod.POST); } return isSelectOrExpand; } diff --git a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/TechnicalActionProcessor.java b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/TechnicalActionProcessor.java index 5b64685..8da28f5 100644 --- a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/TechnicalActionProcessor.java +++ b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/TechnicalActionProcessor.java @@ -130,6 +130,7 @@ public class TechnicalActionProcessor extends TechnicalProcessor final EdmEntityType type = (EdmEntityType) action.getReturnType().getType(); final EntityCollectionSerializerOptions options = EntityCollectionSerializerOptions.with() .contextURL(isODataMetadataNone(responseFormat) ? null : getContextUrl(edmEntitySet, type, false)) + .expand(uriInfo.getExpandOption()) .build(); response.setContent(odata.createSerializer(responseFormat) .entityCollection(serviceMetadata, type, collection, options).getContent()); diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/validator/UriValidatorTest.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/validator/UriValidatorTest.java index 25acb29..26e7b26 100644 --- a/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/validator/UriValidatorTest.java +++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/validator/UriValidatorTest.java @@ -353,24 +353,33 @@ public class UriValidatorTest { } @Test - public void systemQueryOptionsNotAllowedForHttpPostDelete() throws Exception { + public void systemQueryOptionsNotAllowedForHttpDelete() throws Exception { final String[] queryOptions = { QO_FILTER, QO_FORMAT, QO_EXPAND, QO_COUNT, QO_ORDERBY, QO_SEARCH, QO_SELECT, QO_SKIP, QO_TOP, QO_SKIPTOKEN }; for (int i = 0; i < queryOptions.length; i++) { - validateWrong(URI_ENTITY, queryOptions[i], HttpMethod.POST, - UriValidationException.MessageKeys.SYSTEM_QUERY_OPTION_NOT_ALLOWED_FOR_HTTP_METHOD); validateWrong(URI_ENTITY, queryOptions[i], HttpMethod.DELETE, UriValidationException.MessageKeys.SYSTEM_QUERY_OPTION_NOT_ALLOWED_FOR_HTTP_METHOD); } } @Test + public void systemQueryOptionsNotAllowedForHttpPost() throws Exception { + final String[] queryOptions = + { QO_FILTER, QO_FORMAT, QO_COUNT, QO_ORDERBY, QO_SEARCH, QO_SKIP, QO_TOP, QO_SKIPTOKEN }; + for (int i = 0; i < queryOptions.length; i++) { + validateWrong(URI_ENTITY, queryOptions[i], HttpMethod.POST, + UriValidationException.MessageKeys.SYSTEM_QUERY_OPTION_NOT_ALLOWED_FOR_HTTP_METHOD); + } + } + + @Test public void systemQueryOptionsExpandAndSelectAllowedForHttpPutAndPatch() throws Exception { final String[] queryOptions = { QO_SELECT, QO_EXPAND }; for (int i = 0; i < queryOptions.length; i++) { validate(URI_ENTITY, queryOptions[i], HttpMethod.PUT); validate(URI_ENTITY, queryOptions[i], HttpMethod.PATCH); + validate(URI_ENTITY, queryOptions[i], HttpMethod.POST); } }