All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.arangodb.internal.serde.UserDataSerializer Maven / Gradle / Ivy

There is a newer version: 7.8.0
Show newest version
package com.arangodb.internal.serde;

import com.arangodb.shaded.fasterxml.jackson.core.JsonGenerator;
import com.arangodb.shaded.fasterxml.jackson.core.JsonParser;
import com.arangodb.shaded.fasterxml.jackson.databind.JsonSerializer;
import com.arangodb.shaded.fasterxml.jackson.databind.SerializerProvider;

import java.io.IOException;

class UserDataSerializer extends JsonSerializer {
    private final InternalSerde serde;

    UserDataSerializer(InternalSerde serde) {
        this.serde = serde;
    }

    @Override
    public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
        // TODO: find a way to append raw bytes directly
        // see https://github.com/FasterXML/jackson-dataformats-binary/issues/331
        try (JsonParser parser = gen.getCodec().getFactory().createParser(serde.serializeUserData(value))) {
            gen.writeTree(parser.readValueAsTree());
        }
    }
}