// 
// Decompiled by Procyon v0.6.0
// 

package org.bson.codecs;

import java.io.Writer;
import org.bson.json.JsonWriter;
import java.io.StringWriter;
import org.bson.BsonReader;
import org.bson.json.JsonReader;
import org.bson.BsonWriter;
import org.bson.json.JsonWriterSettings;
import org.bson.json.JsonObject;

public class JsonObjectCodec implements Codec<JsonObject>
{
    private final JsonWriterSettings writerSettings;
    
    public JsonObjectCodec() {
        this(JsonWriterSettings.builder().build());
    }
    
    public JsonObjectCodec(final JsonWriterSettings writerSettings) {
        this.writerSettings = writerSettings;
    }
    
    @Override
    public void encode(final BsonWriter writer, final JsonObject value, final EncoderContext encoderContext) {
        writer.pipe(new JsonReader(value.getJson()));
    }
    
    @Override
    public JsonObject decode(final BsonReader reader, final DecoderContext decoderContext) {
        final StringWriter stringWriter = new StringWriter();
        new JsonWriter(stringWriter, this.writerSettings).pipe(reader);
        return new JsonObject(stringWriter.toString());
    }
    
    @Override
    public Class<JsonObject> getEncoderClass() {
        return JsonObject.class;
    }
}
