@Override public void marshal( Object source, HierarchicalStreamWriter writer, MarshallingContext context) { LegendsRawInfo legendsRawInfo = (LegendsRawInfo) source; // encode default values writer.addAttribute("defaultWidth", String.valueOf(legendsRawInfo.getDefaultWidth())); writer.addAttribute("defaultHeight", String.valueOf(legendsRawInfo.getDefaultHeight())); writer.addAttribute("defaultFormat", String.valueOf(legendsRawInfo.getDefaultFormat())); // encode legends information for (LegendRawInfo legendRawInfo : legendsRawInfo.getLegendsRawInfo()) { writer.startNode("legend"); writer.addAttribute("style", legendRawInfo.getStyle()); encodeAttribute(writer, "width", legendRawInfo.getWidth()); encodeAttribute(writer, "height", legendRawInfo.getHeight()); encodeAttribute(writer, "format", legendRawInfo.getFormat()); encodeAttribute(writer, "url", legendRawInfo.getUrl()); encodeAttribute(writer, "completeUrl", legendRawInfo.getCompleteUrl()); encodeAttribute(writer, "minScale", legendRawInfo.getMinScale()); encodeAttribute(writer, "maxScale", legendRawInfo.getMaxScale()); writer.endNode(); } }
@Override public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { LegendsRawInfo legendsRawInfo = new LegendsRawInfo(); // setting the defaults based on legends element attributes legendsRawInfo.setDefaultWidth(toInteger(reader.getAttribute("defaultWidth"))); legendsRawInfo.setDefaultHeight(toInteger(reader.getAttribute("defaultHeight"))); legendsRawInfo.setDefaultFormat(reader.getAttribute("defaultFormat")); // parsing all legends information while (reader.hasMoreChildren()) { reader.moveDown(); legendsRawInfo.addLegendRawInfo(parseLegendRawInfo(reader)); reader.moveUp(); } return legendsRawInfo; }
switch (reader.getNodeName()) { case "width": legendRawInfo.setWidth(toInteger(reader.getValue())); break; case "height": legendRawInfo.setHeight(toInteger(reader.getValue())); break; case "format": break; case "minScale": legendRawInfo.setMinScale(toDouble(reader.getValue())); break; case "maxScale": legendRawInfo.setMaxScale(toDouble(reader.getValue())); break;
xs.registerConverter(new LegendsRawInfoConverter()); xs.alias("legends", LegendsRawInfo.class);