@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; }
@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(); } }
LegendsRawInfo legendsRawInfo = new LegendsRawInfo(); legendsRawInfo.setDefaultWidth(50); legendsRawInfo.setDefaultHeight(100); legendsRawInfo.setDefaultFormat("image/png"); legendRawInfoC.setStyle(""); legendsRawInfo.addLegendRawInfo(legendRawInfoA); legendsRawInfo.addLegendRawInfo(legendRawInfoB); legendsRawInfo.addLegendRawInfo(legendRawInfoC); layer.setLegends(legendsRawInfo); assertThat(l.getLegends().getDefaultWidth(), is(50)); assertThat(l.getLegends().getDefaultHeight(), is(100)); assertThat(l.getLegends().getDefaultFormat(), is("image/png")); assertThat(l.getLegends().getLegendsRawInfo().size(), is(3)); assertThat( l.getLegends().getLegendsRawInfo(), containsInAnyOrder(legendRawInfoA, legendRawInfoB, legendRawInfoC));
/** Helper method that extracts from a legend url the width, height and format parameters. */ private LegendsRawInfo extractLegendsInfo(List<StyleImpl> styles) { LegendsRawInfo legendsRawInfo = new LegendsRawInfo(); // setting some acceptable default values legendsRawInfo.setDefaultWidth(20); legendsRawInfo.setDefaultHeight(20); legendsRawInfo.setDefaultFormat("image/png"); for (StyleImpl style : styles) { // extracting legend information from each style LegendRawInfo legendRawInfo = new LegendRawInfo(); legendRawInfo.setStyle(style.getName()); List legendUrls = style.getLegendURLs(); if (legendUrls != null && !legendUrls.isEmpty()) { String legendUrl = (String) legendUrls.get(0); // let's see if we can extract width, height and format from the style legend url legendRawInfo.setWidth(extractIntegerParameter(legendUrl, LEGEND_WIDTH_PATTERN)); legendRawInfo.setHeight(extractIntegerParameter(legendUrl, LEGEND_HEIGHT_PATTERN)); legendRawInfo.setFormat(extractParameter(legendUrl, LEGEND_FORMAT_PATTERN)); // setting the complete legend url legendRawInfo.setCompleteUrl(legendUrl); } legendsRawInfo.addLegendRawInfo(legendRawInfo); } return legendsRawInfo; }
assertThat(wmsLayer.getLegends(), notNullValue()); assertThat(wmsLayer.getLegends().getDefaultWidth(), is(20)); assertThat(wmsLayer.getLegends().getDefaultHeight(), is(20)); assertThat(wmsLayer.getLegends().getDefaultFormat(), is("image/png")); assertThat(wmsLayer.getLegends().getLegendsRawInfo(), notNullValue()); assertThat(wmsLayer.getLegends().getLegendsRawInfo().size(), is(1)); assertThat(wmsLayer.getLegends().getLegendsRawInfo().get(0).getWidth(), is(50)); assertThat(wmsLayer.getLegends().getLegendsRawInfo().get(0).getHeight(), is(100)); assertThat(wmsLayer.getLegends().getLegendsRawInfo().get(0).getFormat(), is("image/gif"));
LegendsRawInfo legendsRawInfo = new LegendsRawInfo(); legendsRawInfo.setDefaultWidth(50); legendsRawInfo.setDefaultHeight(100); legendsRawInfo.setDefaultFormat("image/png"); legendRawInfoC.setStyle(""); legendsRawInfo.addLegendRawInfo(legendRawInfoA); legendsRawInfo.addLegendRawInfo(legendRawInfoB); legendsRawInfo.addLegendRawInfo(legendRawInfoC); layer.setLegends(legendsRawInfo);
advertisedLayer.setAdvertised(true); LegendsRawInfo legendsRawInfo = new LegendsRawInfo(); legendsRawInfo.setDefaultWidth(50); legendsRawInfo.setDefaultHeight(100); legendsRawInfo.setDefaultFormat("image/png"); LegendRawInfo legendRawInfo1 = new LegendRawInfo(); legendRawInfo1.setStyle("style1"); legendRawInfo2.setUrl("htp://localhost:8080/geoserver"); legendsRawInfo.addLegendRawInfo(legendRawInfo1); legendsRawInfo.addLegendRawInfo(legendRawInfo2); advertisedLayer.setLegends(legendsRawInfo);