You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by ch...@apache.org on 2017/03/23 13:07:31 UTC

olingo-odata2 git commit: [OLINGO-1021] Add ability to use non strict batch parsing

Repository: olingo-odata2
Updated Branches:
  refs/heads/master 22e787318 -> cceffb310


[OLINGO-1021] Add ability to use non strict batch parsing

Signed-off-by: Christian Amend <ch...@sap.com>


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/cceffb31
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/cceffb31
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/cceffb31

Branch: refs/heads/master
Commit: cceffb31024be8e94a210c344ee68b6b98ddfdfb
Parents: 22e7873
Author: Dmitry.Tretyakov <dt...@gmail.com>
Authored: Fri Sep 9 20:03:51 2016 +0300
Committer: Christian Amend <ch...@sap.com>
Committed: Thu Mar 23 14:03:59 2017 +0100

----------------------------------------------------------------------
 .../api/ep/EntityProviderBatchProperties.java   | 14 ++++++++++++++
 .../odata2/core/ep/ProviderFacadeImpl.java      |  3 ++-
 .../core/batch/BatchRequestParserTest.java      | 20 +++++++++++++++++++-
 3 files changed, 35 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/cceffb31/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderBatchProperties.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderBatchProperties.java b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderBatchProperties.java
index 0cb47ec..59ef47f 100644
--- a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderBatchProperties.java
+++ b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderBatchProperties.java
@@ -31,6 +31,11 @@ public class EntityProviderBatchProperties {
    */
   private PathInfo pathInfo;
 
+  /**
+   * Defines whether to use strict batch parsing.
+   */
+  private boolean isStrict = true;
+
   public static EntityProviderBatchPropertiesBuilder init() {
     return new EntityProviderBatchPropertiesBuilder();
   }
@@ -39,6 +44,10 @@ public class EntityProviderBatchProperties {
     return pathInfo;
   }
 
+  public boolean isStrict() {
+    return isStrict;
+  }
+
   public static class EntityProviderBatchPropertiesBuilder {
     private final EntityProviderBatchProperties properties = new EntityProviderBatchProperties();
 
@@ -53,6 +62,11 @@ public class EntityProviderBatchProperties {
       return this;
     }
 
+    public EntityProviderBatchPropertiesBuilder setStrict(final boolean isStrict) {
+      properties.isStrict = isStrict;
+      return this;
+    }
+
     public EntityProviderBatchProperties build() {
       return properties;
     }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/cceffb31/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/ProviderFacadeImpl.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/ProviderFacadeImpl.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/ProviderFacadeImpl.java
index 739513c..9acf487 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/ProviderFacadeImpl.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/ProviderFacadeImpl.java
@@ -241,7 +241,8 @@ public class ProviderFacadeImpl implements EntityProviderInterface {
   @Override
   public List<BatchRequestPart> parseBatchRequest(final String contentType, final InputStream content,
       final EntityProviderBatchProperties properties) throws BatchException {
-    List<BatchRequestPart> batchParts = new BatchParser(contentType, properties, true).parseBatchRequest(content);
+    BatchParser batchParser = new BatchParser(contentType, properties, properties.isStrict());
+    List<BatchRequestPart> batchParts = batchParser.parseBatchRequest(content);
     return batchParts;
   }
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/cceffb31/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchRequestParserTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchRequestParserTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchRequestParserTest.java
index cdf3c4d..269f512 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchRequestParserTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchRequestParserTest.java
@@ -1213,9 +1213,27 @@ public class BatchRequestParserTest {
     parser.parseBatchRequest(in);
   }
 
+  @Test
+  public void testNonStrictGetRequestWithMissingCRLF() throws BatchException {
+    String batch = "--" + BOUNDARY + CRLF
+            + MIME_HEADERS
+            + "Content-ID: 1" + CRLF
+            + CRLF
+            + "GET Employees('1')/EmployeeName HTTP/1.1" + CRLF
+            // + CRLF // Belongs to the GET request
+            + CRLF // Belongs to the
+            + "--" + BOUNDARY + "--";
+
+    parse(batch, false);
+  }
+
   private List<BatchRequestPart> parse(final String batch) throws BatchException {
+    return parse(batch, true);
+  }
+
+  private List<BatchRequestPart> parse(final String batch, final boolean isStrict) throws BatchException {
     InputStream in = new ByteArrayInputStream(batch.getBytes());
-    BatchParser parser = new BatchParser(contentType, batchProperties, true);
+    BatchParser parser = new BatchParser(contentType, batchProperties, isStrict);
     List<BatchRequestPart> batchRequestParts = parser.parseBatchRequest(in);
     assertNotNull(batchRequestParts);
     assertEquals(false, batchRequestParts.isEmpty());