I am using mongo-java-driver in my application to read and write data to mongodb.
I have classes like this -
public A{
private String a;
//Getters & Setters
}
public class B{
private String b;
private List<A> a;
//Getters & Setters
}
public class C{
private String c;
private B b;
//Getters & Setters
}
I have created Codec for the classes C like this -
public class CCodec implements Codec<C> {
private Codec<Document> documentCodec;
public CCodec(CodecRegistry registry) {
documentCodec = registry.get(Document.class);
}
@Override
public void encode(BsonWriter writer, C c, EncoderContext context) {
Document document = new Document();
document.put("c",c.getC());
document.put("b",c.getB());
documentCodec.encode(writer, document, context);
}
}
Codec for class B -
public class BCodec implements Codec<B> {
private Codec<Document> documentCodec;
public CCodec(CodecRegistry registry) {
documentCodec = registry.get(Document.class);
}
@Override
public void encode(BsonWriter writer, B b, EncoderContext context) {
writer.writeStartDocument();
writer.writeString("b",b.getB());
//How to encode A Here
writer.writeEndDocument();
}
}
I can not do encoding in BCodec as i did for CCodec because when i say
Document document = new Document();
It creates a new document but i wan't to have it embedded in Document C.
Now the question is how do i encode field a of type List in B class? See encode method of BCodec class. Needless to say i have added all the Codec in CodecProvider.
Any help is appreciated.