Skip to content

Commit 9780947

Browse files
committed
JAVA-2931: Support nesting RawBsonArray in BsonDocument
In BsonValueCodecProvider, use the BsonArrayCodec to encode RawBsonArray as well as BsonArray. This allows the default BsonDocumentCodec to encode a BsonDocument that nests a RawBsonArray.
1 parent 0742ca1 commit 9780947

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

bson/src/main/org/bson/codecs/BsonValueCodecProvider.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,10 +91,6 @@ public <T> Codec<T> get(final Class<T> clazz, final CodecRegistry registry) {
9191
return (Codec<T>) codecs.get(clazz);
9292
}
9393

94-
if (clazz == BsonArray.class) {
95-
return (Codec<T>) new BsonArrayCodec(registry);
96-
}
97-
9894
if (clazz == BsonJavaScriptWithScope.class) {
9995
return (Codec<T>) new BsonJavaScriptWithScopeCodec(registry.get(BsonDocument.class));
10096
}
@@ -115,6 +111,10 @@ public <T> Codec<T> get(final Class<T> clazz, final CodecRegistry registry) {
115111
return (Codec<T>) new BsonDocumentCodec(registry);
116112
}
117113

114+
if (BsonArray.class.isAssignableFrom(clazz)) {
115+
return (Codec<T>) new BsonArrayCodec(registry);
116+
}
117+
118118
return null;
119119
}
120120

bson/src/test/unit/org/bson/codecs/BsonValueCodecProviderSpecification.groovy

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import org.bson.BsonString
3737
import org.bson.BsonSymbol
3838
import org.bson.BsonTimestamp
3939
import org.bson.BsonUndefined
40+
import org.bson.RawBsonArray
4041
import org.bson.RawBsonDocument
4142
import spock.lang.Specification
4243

@@ -73,6 +74,7 @@ class BsonValueCodecProviderSpecification extends Specification {
7374
provider.get(BsonJavaScriptWithScope, codecRegistry).class == BsonJavaScriptWithScopeCodec
7475

7576
provider.get(BsonArray, codecRegistry).class == BsonArrayCodec
77+
provider.get(RawBsonArray, codecRegistry).class == BsonArrayCodec
7678

7779
provider.get(BsonDocument, codecRegistry).class == BsonDocumentCodec
7880
provider.get(BsonDocumentWrapper, codecRegistry).class == BsonDocumentWrapperCodec

0 commit comments

Comments
 (0)