public boolean isQueryable() { return delegate.isQueryable(); }
/** Returns true if the layer can be queried */ public boolean isQueryable(LayerInfo layer) { try { if (layer.getResource() instanceof WMSLayerInfo) { WMSLayerInfo info = (WMSLayerInfo) layer.getResource(); Layer wl = info.getWMSLayer(null); if (!wl.isQueryable()) { return false; } WMSCapabilities caps = info.getStore().getWebMapServer(null).getCapabilities(); OperationType featureInfo = caps.getRequest().getGetFeatureInfo(); if (featureInfo == null || !featureInfo.getFormats().contains("application/vnd.ogc.gml")) { return false; } } else if (layer.getResource() instanceof WMTSLayerInfo) { return false; } return layer.isQueryable(); } catch (IOException e) { LOGGER.log( Level.INFO, "Failed to determine if the layer is queryable, assuming it's not", e); return false; } }
@Test public void testPutNonDestructive() throws Exception { LayerInfo l = catalog.getLayerByName("cite:Buildings"); assertTrue(l.isEnabled()); boolean isAdvertised = l.isAdvertised(); boolean isOpaque = l.isOpaque(); boolean isQueryable = l.isQueryable(); String xml = "<layer>" + "<defaultStyle>Forests</defaultStyle>" + "<styles>" + "<style>Ponds</style>" + "</styles>" + "</layer>"; MockHttpServletResponse response = putAsServletResponse(ROOT_PATH + "/layers/cite:Buildings", xml, "text/xml"); assertEquals(200, response.getStatus()); l = catalog.getLayerByName("cite:Buildings"); assertTrue(l.isEnabled()); assertEquals(isAdvertised, l.isAdvertised()); assertEquals(isOpaque, l.isOpaque()); assertEquals(isQueryable, l.isQueryable()); }