Revert input stream splitting 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/8dfd515e Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/8dfd515e Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/8dfd515e Branch: refs/heads/master Commit: 8dfd515e89e1ddf0ec91f347264bb4be9144c6d3 Parents: dbaa667 Author: Christian Holzer <[email protected]> Authored: Thu Oct 9 16:31:23 2014 +0200 Committer: Christian Amend <[email protected]> Committed: Thu Oct 9 16:45:27 2014 +0200 ---------------------------------------------------------------------- .../odata2/core/batch/v2/BatchParser.java | 14 ++++- .../odata2/core/batch/v2/BatchParserCommon.java | 56 -------------------- 2 files changed, 13 insertions(+), 57 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/8dfd515e/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/v2/BatchParser.java ---------------------------------------------------------------------- diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/v2/BatchParser.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/v2/BatchParser.java index bf4ce93..09bf987 100644 --- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/v2/BatchParser.java +++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/v2/BatchParser.java @@ -20,6 +20,7 @@ package org.apache.olingo.odata2.core.batch.v2; import java.io.IOException; import java.io.InputStream; +import java.io.InputStreamReader; import java.util.LinkedList; import java.util.List; @@ -80,7 +81,7 @@ public class BatchParser { final String baseUri = getBaseUri(); final String boundary = BatchParserCommon.getBoundary(contentTypeMime, 1); final List<BatchParserResult> resultList = new LinkedList<BatchParserResult>(); - final List<List<Line>> bodyPartStrings = BatchParserCommon.splitRequestByBoundary(in, boundary); + final List<List<Line>> bodyPartStrings = splitBodyParts(in, boundary); for (List<Line> bodyPartString : bodyPartStrings) { BatchBodyPart bodyPart = new BatchBodyPart(bodyPartString, boundary, isStrict).parse(); @@ -89,6 +90,17 @@ public class BatchParser { return resultList; } + + private List<List<Line>> splitBodyParts(final InputStream in, final String boundary) + throws IOException, BatchException { + + final BufferedReaderIncludingLineEndings reader = new BufferedReaderIncludingLineEndings(new InputStreamReader(in)); + final List<Line> message = reader.toList(); + reader.close(); + + return BatchParserCommon.splitMessageByBoundary(message, boundary); + } + private String getBaseUri() throws BatchException { String baseUri = ""; http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/8dfd515e/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/v2/BatchParserCommon.java ---------------------------------------------------------------------- diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/v2/BatchParserCommon.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/v2/BatchParserCommon.java index 5c6cd69..cac340e 100644 --- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/v2/BatchParserCommon.java +++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/v2/BatchParserCommon.java @@ -19,9 +19,7 @@ package org.apache.olingo.odata2.core.batch.v2; import java.io.ByteArrayInputStream; -import java.io.IOException; import java.io.InputStream; -import java.io.InputStreamReader; import java.net.URI; import java.net.URISyntaxException; import java.util.ArrayList; @@ -93,60 +91,6 @@ public class BatchParserCommon { return new ByteArrayInputStream(message.getBytes()); } - static List<List<Line>> splitRequestByBoundary(final InputStream in, final String boundary) - throws BatchException, IOException { - final List<List<Line>> messageParts = new LinkedList<List<Line>>(); - List<Line> currentPart = new ArrayList<Line>(); - boolean isEndReached = false; - - final String quotedBoundary = Pattern.quote(boundary); - final Pattern boundaryDelimiterPattern = Pattern.compile("--" + quotedBoundary + "--[\\s ]*"); - final Pattern boundaryPattern = Pattern.compile("--" + quotedBoundary + "[\\s ]*"); - - final BufferedReaderIncludingLineEndings reader = new BufferedReaderIncludingLineEndings(new InputStreamReader(in)); - String currentLine; - int lineNumber = 1; - - while ((currentLine = reader.readLine()) != null) { - if (boundaryDelimiterPattern.matcher(currentLine.toString()).matches()) { - removeEndingCRLFFromList(currentPart); - messageParts.add(currentPart); - isEndReached = true; - } else if (boundaryPattern.matcher(currentLine.toString()).matches()) { - removeEndingCRLFFromList(currentPart); - messageParts.add(currentPart); - currentPart = new LinkedList<Line>(); - } else { - currentPart.add(new Line(currentLine, lineNumber)); - } - - if (isEndReached) { - break; - } - - lineNumber++; - } - reader.close(); - - // Remove preamble - if (messageParts.size() > 0) { - messageParts.remove(0); - } else { - - throw new BatchException(BatchException.MISSING_BOUNDARY_DELIMITER.addContent(1)); - } - - if (!isEndReached) { - throw new BatchException(BatchException.MISSING_CLOSE_DELIMITER.addContent(1)); - } - - if (messageParts.size() == 0) { - throw new BatchException(BatchException.NO_MATCH_WITH_BOUNDARY_STRING.addContent(boundary).addContent(0)); - } - - return messageParts; - } - static List<List<Line>> splitMessageByBoundary(final List<Line> message, final String boundary) throws BatchException { final List<List<Line>> messageParts = new LinkedList<List<Line>>();
