public void marshal(Object value, HierarchicalStreamWriter writer, MarshallingContext context) { ChartModel chartModel = (ChartModel) value; if (chartModel.getChartEngineId() != null) { writer.addAttribute("chartEngine", chartModel.getChartEngineId()); } if (chartModel.getTheme() != null) { writer.addAttribute("theme", chartModel.getTheme().toString()); } if (chartModel.getStyle().size() > 0) { writer.addAttribute("style", chartModel.getStyle().getStyleString()); } if ((chartModel.getTitle() != null) && (chartModel.getTitle().getText() != null) && (chartModel.getTitle().getText().length() > 0)) { ExtendedHierarchicalStreamWriterHelper.startNode( writer, "title", chartModel.getTitle().getClass()); context.convertAnother(chartModel.getTitle()); writer.endNode(); } for (StyledText subtitle : chartModel.getSubtitles()) { if ((subtitle.getText() != null) && (subtitle.getText().trim().length() > 0)) { ExtendedHierarchicalStreamWriterHelper.startNode(writer, "subtitle", subtitle.getClass()); context.convertAnother(subtitle); writer.endNode(); } } if ((chartModel.getLegend() != null) && chartModel.getLegend().getVisible()) { ExtendedHierarchicalStreamWriterHelper.startNode( writer, "legend", chartModel.getLegend().getClass()); context.convertAnother(chartModel.getLegend()); writer.endNode(); } if (chartModel.getPlot() != null) { String plotType = chartModel.getPlot().getClass().getSimpleName(); plotType = plotType.substring(0, 1).toLowerCase() + plotType.substring(1); ExtendedHierarchicalStreamWriterHelper.startNode( writer, plotType, chartModel.getPlot().getClass()); context.convertAnother(chartModel.getPlot()); if (chartModel.getPlot() instanceof PiePlot) { PiePlot piePlot = (PiePlot) chartModel.getPlot(); if (piePlot.getLabels().getVisible()) { ExtendedHierarchicalStreamWriterHelper.startNode( writer, "labels", piePlot.getLabels().getClass()); context.convertAnother(piePlot.getLabels()); writer.endNode(); } } if (chartModel.getPlot() instanceof TwoAxisPlot) { TwoAxisPlot twoAxisPlot = (TwoAxisPlot) chartModel.getPlot(); Axis xAxis = twoAxisPlot.getHorizontalAxis(); ExtendedHierarchicalStreamWriterHelper.startNode( writer, "horizontalAxis", xAxis.getClass()); context.convertAnother(xAxis); writer.endNode(); Axis yAxis = twoAxisPlot.getVerticalAxis(); ExtendedHierarchicalStreamWriterHelper.startNode(writer, "verticalAxis", yAxis.getClass()); context.convertAnother(yAxis); writer.endNode(); Grid grid = twoAxisPlot.getGrid(); if (grid.getVisible()) { ExtendedHierarchicalStreamWriterHelper.startNode(writer, "grid", grid.getClass()); context.convertAnother(grid); writer.endNode(); } } writer.endNode(); } }