Package io.fathom.cloud.protobuf.mapper

Source Code of io.fathom.cloud.protobuf.mapper.MessageFieldMapper

package io.fathom.cloud.protobuf.mapper;

import java.io.IOException;

import com.google.gson.stream.JsonReader;
import com.google.protobuf.Descriptors.FieldDescriptor;
import com.google.protobuf.Message;

class MessageFieldMapper extends FieldMapper {
    final MessageMapper mapper;

    public MessageFieldMapper(FieldDescriptor field, MessageMapper mapper) {
        super(field);
        this.mapper = mapper;
    }

    @Override
    public void writeValue(Object o, ProtobufWriter json) throws IOException {
        Message msg = (Message) o;
        mapper.write(msg, json);
    }

    @Override
    public void read(Message.Builder dest, JsonReader json) throws IOException {
        switch (json.peek()) {
        case NULL:
            json.nextNull();
            break;

        case BEGIN_OBJECT:
            Message.Builder builder = dest.newBuilderForField(field);
            mapper.read(builder, json);
            dest.setField(field, builder);
            break;

        default:
            throw new IOException("Expected object");
        }
    }

    @Override
    public Object readValue(JsonReader json) throws IOException {
        throw new UnsupportedOperationException();
    }

}
TOP

Related Classes of io.fathom.cloud.protobuf.mapper.MessageFieldMapper

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.