You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by tb...@apache.org on 2013/09/05 13:58:09 UTC

git commit: improve batch request parsing

Updated Branches:
  refs/heads/master b7e9f394f -> 9640c7643


improve batch request parsing


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

Branch: refs/heads/master
Commit: 9640c76433059afb285caa49dbe6bf283907eabc
Parents: b7e9f39
Author: Tamara Boehm <ta...@sap.com>
Authored: Thu Sep 5 13:54:28 2013 +0200
Committer: Tamara Boehm <ta...@sap.com>
Committed: Thu Sep 5 13:55:56 2013 +0200

----------------------------------------------------------------------
 .../odata2/core/batch/BatchRequestParser.java     | 11 ++++++++++-
 .../odata2/core/batch/BatchRequestParserTest.java | 18 ++++++++----------
 2 files changed, 18 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/9640c764/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchRequestParser.java
----------------------------------------------------------------------
diff --git a/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchRequestParser.java b/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchRequestParser.java
index e37d572..e223a6e 100644
--- a/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchRequestParser.java
+++ b/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchRequestParser.java
@@ -123,7 +123,7 @@ public class BatchRequestParser {
       final String closeDelimiter = "--" + boundary + "--" + REG_EX_ZERO_OR_MORE_WHITESPACES;
       while (scanner.hasNext() && !scanner.hasNext(closeDelimiter)) {
         requests.add(parseMultipart(scanner, boundary, false));
-        parseNewLine(scanner);
+        parseOptionalLine(scanner);
       }
       if (scanner.hasNext(closeDelimiter)) {
         scanner.next(closeDelimiter);
@@ -246,6 +246,8 @@ public class BatchRequestParser {
       InputStream body = new ByteArrayInputStream(new byte[0]);
       if (isChangeSet) {
         body = parseBody(scanner);
+      } else {
+        parseNewLine(scanner);
       }
 
       ODataRequestBuilder requestBuilder = ODataRequest.method(httpMethod)
@@ -503,6 +505,13 @@ public class BatchRequestParser {
     }
   }
 
+  private void parseOptionalLine(final Scanner scanner) throws BatchException {
+    while (scanner.hasNext() && scanner.hasNext(REG_EX_BLANK_LINE)) {
+      scanner.next();
+      currentLineNumber++;
+    }
+  }
+
   private String getBaseUri() throws BatchException {
     if (batchRequestPathInfo != null) {
       if (batchRequestPathInfo.getServiceRoot() != null) {

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/9640c764/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchRequestParserTest.java
----------------------------------------------------------------------
diff --git a/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchRequestParserTest.java b/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchRequestParserTest.java
index b0babf7..725a810 100644
--- a/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchRequestParserTest.java
+++ b/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchRequestParserTest.java
@@ -128,7 +128,14 @@ public class BatchRequestParserTest {
       throw new IOException("Requested file '" + fileName + "' was not found.");
     }
     String content = StringHelper.inputStreamToString(contentInputStream);
-    String batch = LF
+    String batch = "--batch_8194-cf13-1f56" + LF
+        + MIME_HEADERS
+        + LF
+        + "GET Employees?$filter=Age%20gt%2040 HTTP/1.1" + LF
+        + "Accept: application/atomsvc+xml;q=0.8, application/json;odata=verbose;q=0.5, */*;q=0.1" + LF
+        + "MaxDataServiceVersion: 2.0" + LF
+        + LF
+        + LF
         + "--batch_8194-cf13-1f56" + LF
         + "Content-Type: multipart/mixed; boundary=changeset_f980-1cb6-94dd" + LF
         + LF
@@ -144,15 +151,6 @@ public class BatchRequestParserTest {
         + content + LF
         + LF
         + "--changeset_f980-1cb6-94dd--" + LF
-        + LF
-        + "--batch_8194-cf13-1f56" + LF
-        + MIME_HEADERS
-        + LF
-        + "GET Employees?$filter=Age%20gt%2040 HTTP/1.1" + LF
-        + "Accept: application/atomsvc+xml;q=0.8, application/json;odata=verbose;q=0.5, */*;q=0.1" + LF
-        + "MaxDataServiceVersion: 2.0" + LF
-        + LF
-        + LF
         + "--batch_8194-cf13-1f56--";
     List<BatchRequestPart> BatchRequestParts = parse(batch);
     for (BatchRequestPart object : BatchRequestParts) {