You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by mi...@apache.org on 2015/08/06 22:01:25 UTC
olingo-odata4 git commit: [OLINGO-729] Minor fix in BatchSerializer
Repository: olingo-odata4
Updated Branches:
refs/heads/master f187ad351 -> 15a06522e
[OLINGO-729] Minor fix in BatchSerializer
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/15a06522
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/15a06522
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/15a06522
Branch: refs/heads/master
Commit: 15a06522e9cdbe52972df1078c64ee4928767181
Parents: f187ad3
Author: mibo <mi...@apache.org>
Authored: Thu Aug 6 22:00:39 2015 +0200
Committer: mibo <mi...@apache.org>
Committed: Thu Aug 6 22:00:58 2015 +0200
----------------------------------------------------------------------
.../serializer/BatchResponseSerializer.java | 3 +-
.../serializer/BatchResponseSerializerTest.java | 52 ++++++++++++++++++++
2 files changed, 54 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/15a06522/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/BatchResponseSerializer.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/BatchResponseSerializer.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/BatchResponseSerializer.java
index 46c9672..d54f028 100644
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/BatchResponseSerializer.java
+++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/BatchResponseSerializer.java
@@ -201,7 +201,8 @@ public class BatchResponseSerializer {
}
if(buffer.remaining() < b.length) {
buffer.flip();
- ByteBuffer tmp = ByteBuffer.allocate(buffer.limit() *2);
+ int newSize = (buffer.limit() * 2) + b.length;
+ ByteBuffer tmp = ByteBuffer.allocate(newSize);
tmp.put(buffer);
buffer = tmp;
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/15a06522/lib/server-core/src/test/java/org/apache/olingo/server/core/serializer/BatchResponseSerializerTest.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/test/java/org/apache/olingo/server/core/serializer/BatchResponseSerializerTest.java b/lib/server-core/src/test/java/org/apache/olingo/server/core/serializer/BatchResponseSerializerTest.java
index f73479b..b57340d 100644
--- a/lib/server-core/src/test/java/org/apache/olingo/server/core/serializer/BatchResponseSerializerTest.java
+++ b/lib/server-core/src/test/java/org/apache/olingo/server/core/serializer/BatchResponseSerializerTest.java
@@ -27,6 +27,7 @@ import java.io.InputStream;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
+import java.util.Random;
import java.util.UUID;
import org.apache.commons.io.IOUtils;
@@ -401,6 +402,42 @@ public class BatchResponseSerializerTest {
}
@Test
+ public void testBigResponse() throws Exception {
+ List<ODataResponsePart> parts = new ArrayList<ODataResponsePart>();
+ ODataResponse response = new ODataResponse();
+ response.setStatusCode(HttpStatusCode.OK.getStatusCode());
+ response.setHeader(HttpHeader.CONTENT_TYPE, "application/json");
+ String bigData = generateData(10000);
+ response.setContent(IOUtils.toInputStream(bigData));
+
+ List<ODataResponse> responses = new ArrayList<ODataResponse>(1);
+ responses.add(response);
+ parts.add(new ODataResponsePart(responses, false));
+
+ final BatchResponseSerializer serializer = new BatchResponseSerializer();
+ final InputStream content = serializer.serialize(parts, BOUNDARY);
+
+ assertNotNull(content);
+ final BatchLineReader reader =
+ new BatchLineReader(content);
+ final List<String> body = reader.toList();
+ reader.close();
+
+ int line = 0;
+ assertEquals(10, body.size());
+ assertTrue(body.get(line++).contains("--batch_"));
+ assertEquals("Content-Type: application/http" + CRLF, body.get(line++));
+ assertEquals("Content-Transfer-Encoding: binary" + CRLF, body.get(line++));
+ assertEquals(CRLF, body.get(line++));
+ assertEquals("HTTP/1.1 200 OK" + CRLF, body.get(line++));
+ assertEquals("Content-Type: application/json" + CRLF, body.get(line++));
+ assertEquals("Content-Length: 10000" + CRLF, body.get(line++));
+ assertEquals(CRLF, body.get(line++));
+ assertEquals(bigData + CRLF, body.get(line++));
+ assertTrue(body.get(line++).contains("--batch_"));
+ }
+
+ @Test
public void testChangeSetResponse() throws Exception {
List<ODataResponsePart> parts = new ArrayList<ODataResponsePart>();
ODataResponse response = new ODataResponse();
@@ -438,4 +475,19 @@ public class BatchResponseSerializerTest {
assertTrue(body.get(line++).contains("--changeset_"));
assertTrue(body.get(line++).contains("--batch_"));
}
+
+ /**
+ * Generates a string with given length containing random upper case characters ([A-Z]).
+ * @param len length of the generated string
+ * @return random upper case characters ([A-Z])
+ */
+ public static String generateData(final int len) {
+ Random random = new Random();
+ StringBuilder b = new StringBuilder(len);
+ for (int j = 0; j < len; j++) {
+ final char c = (char) ('A' + random.nextInt('Z' - 'A' + 1));
+ b.append(c);
+ }
+ return b.toString();
+ }
}