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);
     }
   }
   

Reply via email to