Package org.platformlayer.client.cli.output

Source Code of org.platformlayer.client.cli.output.MetricToJsonVisitor

package org.platformlayer.client.cli.output;

import java.io.Closeable;
import java.io.IOException;
import java.io.OutputStream;
import java.io.StringWriter;
import java.io.Writer;

import org.platformlayer.metrics.model.MetricDataStream;
import org.platformlayer.metrics.model.MetricDataVisitor;

import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonGenerator;

public class MetricToJsonVisitor implements MetricDataVisitor, Closeable {

  final JsonGenerator jsonGenerator;

  public MetricToJsonVisitor(OutputStream os) throws IOException {
    JsonFactory jsonFactory = buildJsonFactory();
    JsonGenerator jsonGenerator = jsonFactory.createJsonGenerator(os);

    this.jsonGenerator = jsonGenerator;
  }

  public MetricToJsonVisitor(Writer writer) throws IOException {
    JsonFactory jsonFactory = buildJsonFactory();
    JsonGenerator jsonGenerator = jsonFactory.createJsonGenerator(writer);
    jsonGenerator.useDefaultPrettyPrinter();
    this.jsonGenerator = jsonGenerator;
  }

  private JsonFactory buildJsonFactory() {
    return new JsonFactory();
  }

  public static String toString(MetricDataStream s) throws IOException {
    // TODO: This is not very efficient; we deserialize a JSON stream and reserialize it
    StringWriter writer = new StringWriter();

    MetricToJsonVisitor visitor = new MetricToJsonVisitor(writer);
    s.accept(visitor);
    visitor.close();

    return writer.toString();
  }

  @Override
  public void startObject() throws IOException {
    jsonGenerator.writeStartObject();
  }

  @Override
  public void endObject() throws IOException {
    jsonGenerator.writeEndObject();
  }

  @Override
  public void gotValueString(String s) throws IOException {
    jsonGenerator.writeString(s);
  }

  @Override
  public void gotKey(String key) throws IOException {
    jsonGenerator.writeFieldName(key);
  }

  @Override
  public void startArray() throws IOException {
    jsonGenerator.writeStartArray();
  }

  @Override
  public void endArray() throws IOException {
    jsonGenerator.writeEndArray();
  }

  @Override
  public void gotValueBoolean(boolean v) throws IOException {
    jsonGenerator.writeBoolean(v);
  }

  @Override
  public void gotValueNull() throws IOException {
    jsonGenerator.writeNull();
  }

  @Override
  public void gotValueInt(int v) throws IOException {
    jsonGenerator.writeNumber(v);
  }

  @Override
  public void gotValueFloat(float v) throws IOException {
    jsonGenerator.writeNumber(v);
  }

  @Override
  public void gotValueDouble(double v) throws IOException {
    jsonGenerator.writeNumber(v);
  }

  @Override
  public void gotValueLong(long v) throws IOException {
    jsonGenerator.writeNumber(v);
  }

  @Override
  public void close() throws IOException {
    jsonGenerator.close();
  }

}
TOP

Related Classes of org.platformlayer.client.cli.output.MetricToJsonVisitor

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.