Skip to content

Commit 025c765

Browse files
committed
JAVA-2305: Report correct maximum document size in BsonSerializationException
1 parent 50e8e28 commit 025c765

File tree

2 files changed

+21
-12
lines changed

2 files changed

+21
-12
lines changed

bson/src/main/org/bson/BsonBinaryWriter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -373,8 +373,8 @@ private void writeCurrentName() {
373373
private void backpatchSize() {
374374
int size = bsonOutput.getPosition() - getContext().startPosition;
375375
if (size > maxDocumentSizeStack.peek()) {
376-
throw new BsonSerializationException(format("Size %d is larger than MaxDocumentSize %d.", size,
377-
binaryWriterSettings.getMaxDocumentSize()));
376+
throw new BsonSerializationException(format("Document size of %d is larger than maximum of %d.", size,
377+
maxDocumentSizeStack.peek()));
378378
}
379379
bsonOutput.writeInt32(bsonOutput.getPosition() - size, size);
380380
}

bson/src/test/unit/org/bson/BsonBinaryWriterTest.java

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -49,20 +49,29 @@ public void tearDown() {
4949
writer.close();
5050
}
5151

52-
@Test(expected = BsonSerializationException.class)
52+
@Test
5353
public void shouldThrowWhenMaxDocumentSizeIsExceeded() {
54-
writer.writeStartDocument();
55-
writer.writeBinaryData("b", new BsonBinary(new byte[1024]));
56-
writer.writeEndDocument();
54+
try {
55+
writer.writeStartDocument();
56+
writer.writeBinaryData("b", new BsonBinary(new byte[1024]));
57+
writer.writeEndDocument();
58+
fail();
59+
} catch (BsonSerializationException e) {
60+
assertEquals("Document size of 1037 is larger than maximum of 1024.", e.getMessage());
61+
}
5762
}
5863

59-
@Test(expected = BsonSerializationException.class)
64+
@Test
6065
public void shouldThrowIfAPushedMaxDocumentSizeIsExceeded() {
61-
writer.writeStartDocument();
62-
writer.pushMaxDocumentSize(10);
63-
writer.writeStartDocument("doc");
64-
writer.writeString("s", "123456789");
65-
writer.writeEndDocument();
66+
try {
67+
writer.writeStartDocument();
68+
writer.pushMaxDocumentSize(10);
69+
writer.writeStartDocument("doc");
70+
writer.writeString("s", "123456789");
71+
writer.writeEndDocument();
72+
} catch (BsonSerializationException e) {
73+
assertEquals("Document size of 22 is larger than maximum of 10.", e.getMessage());
74+
}
6675
}
6776

6877
@Test

0 commit comments

Comments
 (0)