Package io.fathom.cloud.protobuf

Source Code of io.fathom.cloud.protobuf.ProtobufPropertiesWriter

package io.fathom.cloud.protobuf;

import io.fathom.cloud.protobuf.mapper.MessageMapper;

import java.io.IOException;
import java.io.Writer;

import com.google.protobuf.Descriptors.Descriptor;
import com.google.protobuf.Message;

public class ProtobufPropertiesWriter extends ProtobufTextWriter {

    final Writer out;
    final char separator;

    public ProtobufPropertiesWriter(Writer out, char separator) {
        this.out = out;
        this.separator = separator;
    }

    public static void serialize(Message src, Writer out, char separator) throws IOException {
        ProtobufPropertiesWriter writer = new ProtobufPropertiesWriter(out, separator);
        Descriptor descriptor = src.getDescriptorForType();
        MessageMapper mapper = MessageMapper.getMessageMapper(descriptor);
        mapper.write(src, writer);
    }

    @Override
    protected void writePath() throws IOException {
        int i = 0;
        for (State state : keyStack) {
            String s = null;

            switch (state.type) {
            case NAME:
                s = state.key;
                break;

            case ARRAY:
                s = Integer.toString(state.index);
                break;

            case OBJECT:
                break;

            default:
                throw new IllegalStateException();
            }

            if (s != null) {
                if (i != 0) {
                    out.append('.');
                }
                out.append(s);
                i++;
            }
        }
    }

    @Override
    protected void writeValue(String s) throws IOException {
        out.append(separator);
        out.append(s);
        out.append("\n");
    }
}
TOP

Related Classes of io.fathom.cloud.protobuf.ProtobufPropertiesWriter

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.