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 <[email protected]>
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);
}
}