public DescribeLayerModel(final DescribeLayerRequest request) throws ServiceException { this.version = request.getVersion(); final String baseURL = request.getBaseUrl(); final List<MapLayerInfo> layersInfo = request.getLayers(); for (MapLayerInfo layer : layersInfo) {
/** * @see org.geoserver.ows.Response#getMimeType(java.lang.Object, * org.geoserver.platform.Operation) */ @Override public String getMimeType(Object value, Operation operation) throws ServiceException { Object op = operation.getParameters()[0]; if (op instanceof DescribeLayerRequest) { DescribeLayerRequest dlr = (DescribeLayerRequest) op; return dlr.getOutputFormat(); } throw new ServiceException("Unable to parse incoming operation"); }
request.setRawKvp(rawKvp); final String version = request.getVersion(); if (null == version) { String code = "NoVersionInfo"; request.setLayers(layers); if (layers == null || layers.size() == 0) { throw new ServiceException(
request = new DescribeLayerRequest(); request.setBaseUrl("http://localhost:8080/geoserver"); request.setVersion(WMS.VERSION_1_1_1.toString());
MapLayerInfo layer; final List layers = req.getLayers();
@Test public void testMultipleLayers() throws Exception { request.addLayer(new MapLayerInfo(vectorLayerInfo)); request.addLayer(new MapLayerInfo(coverageLayerInfo)); final String serverBaseUrl = "http://geoserver.org"; transformer = new DescribeLayerTransformer(serverBaseUrl); final Document dom = WMSTestSupport.transform(request, transformer); final String layerDescPath1 = "/WMS_DescribeLayerResponse/LayerDescription[1]"; final String layerDescPath2 = "/WMS_DescribeLayerResponse/LayerDescription[2]"; assertXpathExists(layerDescPath1, dom); assertXpathExists(layerDescPath2, dom); assertXpathEvaluatesTo("fakeWs:states", layerDescPath1 + "/@name", dom); assertXpathEvaluatesTo("fakeWs:fakeCoverage", layerDescPath2 + "/@name", dom); } }
/** * Encode the object. * * @param o The {@link DescribeLayerRequest} to encode a DescribeLayer response for * @throws IllegalArgumentException if the Object is not encodeable. */ public void encode(Object o) throws IllegalArgumentException { if (!(o instanceof DescribeLayerRequest)) { throw new IllegalArgumentException(); } DescribeLayerRequest req = (DescribeLayerRequest) o; AttributesImpl versionAtt = new AttributesImpl(); final String requestVersion = req.getVersion(); if (requestVersion == null) { throw new NullPointerException("requestVersion"); } versionAtt.addAttribute("", "version", "version", "", requestVersion); start("WMS_DescribeLayerResponse", versionAtt); handleLayers(req); end("WMS_DescribeLayerResponse"); }
/** * Takes the <code>FeatureResult</code>s generated by the <code>execute</code> method in the * superclass and constructs a <code>DescribeLayerResult</code> which is passed to a <code> * GML2FeatureResponseDelegate</code>. * * @see AbstractFeatureInfoResponse#writeTo(OutputStream) */ @Override public void write(DescribeLayerModel results, DescribeLayerRequest request, OutputStream out) throws ServiceException, IOException { DescribeLayerTransformer transformer; transformer = new DescribeLayerTransformer(request.getBaseUrl()); Charset encoding = wms.getCharSet(); transformer.setEncoding(encoding); if (wms.getGeoServer().getSettings().isVerbose()) { transformer.setIndentation(2); } try { transformer.transform(request, out); out.flush(); } catch (TransformerException e) { throw new ServiceException(e); } } }
@Test public void testSingleRasterLayer() throws Exception { MapLayerInfo mapLayerInfo = new MapLayerInfo(coverageLayerInfo); request.addLayer(mapLayerInfo); final String serverBaseUrl = "http://geoserver.org"; transformer = new DescribeLayerTransformer(serverBaseUrl); final Document dom = WMSTestSupport.transform(request, transformer); final String layerDescPath = "/WMS_DescribeLayerResponse/LayerDescription"; assertXpathExists(layerDescPath, dom); assertXpathEvaluatesTo("fakeWs:fakeCoverage", layerDescPath + "/@name", dom); // no wfs attribute for a coverage layer assertXpathEvaluatesTo("", layerDescPath + "/@wfs", dom); assertXpathExists(layerDescPath + "/@owsURL", dom); final String expectedOWSURLAtt = serverBaseUrl + "/wcs?"; assertXpathEvaluatesTo(expectedOWSURLAtt, layerDescPath + "/@owsURL", dom); assertXpathExists(layerDescPath + "/@owsType", dom); assertXpathEvaluatesTo("WCS", layerDescPath + "/@owsType", dom); assertXpathExists(layerDescPath + "/Query", dom); assertXpathEvaluatesTo("fakeWs:fakeCoverage", layerDescPath + "/Query/@typeName", dom); }
@Test public void testSingleVectorLayer() throws Exception { MapLayerInfo mapLayerInfo = new MapLayerInfo(vectorLayerInfo); request.addLayer(mapLayerInfo); final String serverBaseUrl = "http://geoserver.org"; transformer = new DescribeLayerTransformer(serverBaseUrl); final Document dom = WMSTestSupport.transform(request, transformer); final String layerDescPath = "/WMS_DescribeLayerResponse/LayerDescription"; assertXpathExists(layerDescPath, dom); assertXpathEvaluatesTo("fakeWs:states", layerDescPath + "/@name", dom); final String expectedWfsAtt = serverBaseUrl + "/wfs?"; assertXpathExists(layerDescPath + "/@wfs", dom); assertXpathEvaluatesTo(expectedWfsAtt, layerDescPath + "/@wfs", dom); assertXpathExists(layerDescPath + "/@owsURL", dom); assertXpathEvaluatesTo(expectedWfsAtt, layerDescPath + "/@owsURL", dom); assertXpathExists(layerDescPath + "/@owsType", dom); assertXpathEvaluatesTo("WFS", layerDescPath + "/@owsType", dom); assertXpathExists(layerDescPath + "/Query", dom); assertXpathEvaluatesTo("fakeWs:states", layerDescPath + "/Query/@typeName", dom); }