com.vaadin.flow.component.charts.model.serializers.AbstractSeriesBeanSerializer Maven / Gradle / Ivy
/**
* Copyright 2000-2024 Vaadin Ltd.
*
* This program is available under Vaadin Commercial License and Service Terms.
*
* See {@literal } for the full
* license.
*/
package com.vaadin.flow.component.charts.model.serializers;
import java.io.IOException;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.vaadin.flow.component.charts.model.AbstractSeries;
import com.vaadin.flow.component.charts.model.PlotOptionsSeries;
/**
* Custom bean serializer for {@link AbstractSeries} that adds the type field.
* We need to use a bean serializer so that annotations work.
*
*/
public class AbstractSeriesBeanSerializer
extends BeanSerializationDelegate {
@Override
public Class getBeanClass() {
return AbstractSeries.class;
}
@Override
public void serialize(AbstractSeries bean,
BeanSerializerDelegator serializer,
JsonGenerator jgen, SerializerProvider provider)
throws IOException {
AbstractSeries series = bean;
jgen.writeStartObject();
// write other fields as per normal serialization rules
serializer.serializeFields(bean, jgen, provider);
if (series.getPlotOptions() != null
&& !(bean.getPlotOptions() instanceof PlotOptionsSeries)) {
jgen.writeObjectField("type",
series.getPlotOptions().getChartType());
}
jgen.writeEndObject();
}
}