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 <[email protected]> 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 <[email protected]> Authored: Fri Sep 9 20:03:51 2016 +0300 Committer: Christian Amend <[email protected]> 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());
