Skip to content

Commit

Permalink
Remove ObjectCodec dependency from Jackson BsonGenerator (as construc…
Browse files Browse the repository at this point in the history
…tor arg). jackson4bson
  • Loading branch information
asereda-gs committed Oct 16, 2019
1 parent 532593d commit c767599
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,8 @@ public class BsonGenerator extends GeneratorBase implements Wrapper<BsonWriter>

private final BsonWriter writer;

BsonGenerator(int jsonFeatures, ObjectCodec codec, BsonWriter writer) {
super(jsonFeatures, codec);
BsonGenerator(int jsonFeatures, BsonWriter writer) {
super(jsonFeatures, null);
this.writer = Objects.requireNonNull(writer, "writer");
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,14 +64,13 @@ public <T> Codec<T> get(Class<T> clazz) {
private static class JacksonCodec<T> implements Codec<T> {

private final Class<T> clazz;
private final ObjectMapper mapper;
private final ObjectReader reader;
private final ObjectWriter writer;
private final IOContext ioContext;

JacksonCodec(Class<T> clazz, ObjectMapper mapper) {
this.clazz = Objects.requireNonNull(clazz, "clazz");
this.mapper = Objects.requireNonNull(mapper, "mapper");
Objects.requireNonNull(mapper, "mapper");
this.reader = mapper.readerFor(clazz);
this.writer = mapper.writerFor(clazz);
this.ioContext = new IOContext(new BufferRecycler(), null, false);
Expand All @@ -92,7 +91,7 @@ public T decode(BsonReader reader, DecoderContext decoderContext) {

@Override
public void encode(BsonWriter writer, T value, EncoderContext encoderContext) {
final BsonGenerator generator = new BsonGenerator(0, mapper, writer);
final BsonGenerator generator = new BsonGenerator(0, writer);
try {
this.writer.writeValue(generator, value);
} catch (IOException e) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@

package org.immutables.criteria.mongo.bson4jackson;

import com.fasterxml.jackson.databind.ObjectMapper;
import org.bson.BsonDocument;
import org.bson.BsonDocumentWriter;
import org.bson.BsonNull;
import org.bson.BsonValue;
import org.bson.BsonWriter;
import org.junit.jupiter.api.Test;

import java.io.IOException;
Expand All @@ -34,12 +34,10 @@
*/
class BsonGeneratorTest {

private final ObjectMapper mapper = new ObjectMapper();

@Test
void emptyObject() throws IOException {
BsonDocumentWriter writer = new BsonDocumentWriter(new BsonDocument());
BsonGenerator generator = new BsonGenerator(0, mapper, writer);
BsonGenerator generator = generatorFor(writer);
generator.writeStartObject();
generator.writeEndObject();

Expand All @@ -50,7 +48,7 @@ void emptyObject() throws IOException {
@Test
void binary() throws IOException {
BsonDocumentWriter writer = new BsonDocumentWriter(new BsonDocument());
BsonGenerator generator = new BsonGenerator(0, mapper, writer);
BsonGenerator generator = generatorFor(writer);
check(generator.canWriteBinaryNatively());
check(writeAndReturnValue(gen -> gen.writeBinary(new byte[] {})).asBinary().getData()).isEmpty();
check(writeAndReturnValue(gen -> gen.writeBinary(new byte[] {1})).asBinary().getData()).isOf((byte) 1);
Expand All @@ -61,7 +59,7 @@ void binary() throws IOException {
@Test
void checkClosed() throws IOException {
BsonDocumentWriter writer = new BsonDocumentWriter(new BsonDocument());
BsonGenerator generator = new BsonGenerator(0, mapper, writer);
BsonGenerator generator = generatorFor(writer);

check(!generator.isClosed());
generator.close();
Expand All @@ -74,7 +72,7 @@ void checkClosed() throws IOException {
@Test
void nulls() throws IOException {
BsonDocumentWriter writer = new BsonDocumentWriter(new BsonDocument());
BsonGenerator generator = new BsonGenerator(0, mapper, writer);
BsonGenerator generator = generatorFor(writer);
generator.writeStartObject();

generator.writeFieldName("null");
Expand All @@ -101,7 +99,7 @@ void nulls() throws IOException {

private BsonValue writeAndReturnValue(IoConsumer<BsonGenerator> consumer) throws IOException {
BsonDocumentWriter writer = new BsonDocumentWriter(new BsonDocument());
BsonGenerator generator = new BsonGenerator(0, mapper, writer);
BsonGenerator generator = generatorFor(writer);
generator.writeStartObject();
generator.writeFieldName("value");
consumer.accept(generator);
Expand All @@ -115,5 +113,9 @@ private interface IoConsumer<T> {
void accept(T value) throws IOException;
}

private BsonGenerator generatorFor(BsonWriter writer) {
return new BsonGenerator(0, writer);
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ private void jacksonThenBson(String json) throws IOException {

BasicOutputBuffer buffer = new BasicOutputBuffer();
BsonWriter writer = new BsonBinaryWriter(buffer);
BsonGenerator generator = new BsonGenerator(0, mapper, writer);
BsonGenerator generator = new BsonGenerator(0, writer);
// write with jackson
mapper.writeValue(generator, toWrite);
BsonBinaryReader reader = new BsonBinaryReader(ByteBuffer.wrap(buffer.toByteArray()));
Expand Down Expand Up @@ -200,7 +200,7 @@ private void jacksonThenJackson(String json) throws IOException {
BasicOutputBuffer buffer = new BasicOutputBuffer();
BsonWriter writer = new BsonBinaryWriter(buffer);

BsonGenerator generator = new BsonGenerator(0, mapper, writer);
BsonGenerator generator = new BsonGenerator(0, writer);
// write with Jackson
mapper.writeValue(generator, expected);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import org.bson.BsonBinaryWriter;
import org.bson.BsonDocument;
import org.bson.BsonValue;
import org.bson.BsonWriter;
import org.bson.codecs.EncoderContext;
import org.bson.codecs.configuration.CodecRegistry;
import org.bson.io.BasicOutputBuffer;
Expand Down

0 comments on commit c767599

Please sign in to comment.