/** * @return {@code TileSet*} * @see org.geoserver.wms.ExtendedCapabilitiesProvider#getVendorSpecificCapabilitiesRoots */ public List<String> getVendorSpecificCapabilitiesRoots(final GetCapabilitiesRequest request) { if (gwc.getConfig().isDirectWMSIntegrationEnabled() && isTiled(request)) { return Collections.singletonList("TileSet*"); } return Collections.emptyList(); }
/** * @return {@code TileSet*} * @see org.geoserver.wms.ExtendedCapabilitiesProvider#getVendorSpecificCapabilitiesRoots */ public List<String> getVendorSpecificCapabilitiesRoots(final GetCapabilitiesRequest request) { if (gwc.getConfig().isDirectWMSIntegrationEnabled() && isTiled(request)) { return Collections.singletonList("TileSet*"); } return Collections.emptyList(); }
/** * @see org.geoserver.wms.ExtendedCapabilitiesProvider#getVendorSpecificCapabilitiesChildDecls() */ public List<String> getVendorSpecificCapabilitiesChildDecls(final GetCapabilitiesRequest request) { if (gwc.getConfig().isDirectWMSIntegrationEnabled() && isTiled(request)) { List<String> wmscElements = new ArrayList<String>(); wmscElements .add("<!ELEMENT TileSet (SRS, BoundingBox?, Resolutions, Width, Height, Format, Layers*, Styles*) >"); wmscElements.add("<!ELEMENT Resolutions (#PCDATA) >"); wmscElements.add("<!ELEMENT Width (#PCDATA) >"); wmscElements.add("<!ELEMENT Height (#PCDATA) >"); wmscElements.add("<!ELEMENT Layers (#PCDATA) >"); wmscElements.add("<!ELEMENT Styles (#PCDATA) >"); return wmscElements; } return Collections.emptyList(); }
/** * @see * org.geoserver.wms.ExtendedCapabilitiesProvider#getVendorSpecificCapabilitiesChildDecls(GetCapabilitiesRequest) */ public List<String> getVendorSpecificCapabilitiesChildDecls( final GetCapabilitiesRequest request) { if (gwc.getConfig().isDirectWMSIntegrationEnabled() && isTiled(request)) { List<String> wmscElements = new ArrayList<String>(); wmscElements.add( "<!ELEMENT TileSet (SRS, BoundingBox?, Resolutions, Width, Height, Format, Layers*, Styles*) >"); wmscElements.add("<!ELEMENT Resolutions (#PCDATA) >"); wmscElements.add("<!ELEMENT Width (#PCDATA) >"); wmscElements.add("<!ELEMENT Height (#PCDATA) >"); wmscElements.add("<!ELEMENT Layers (#PCDATA) >"); wmscElements.add("<!ELEMENT Styles (#PCDATA) >"); return wmscElements; } return Collections.emptyList(); }
public boolean isServiceEnabled(final Service service) { return getConfig().isEnabled(service.getPathName()); }
public boolean isServiceEnabled(final Service service) { return getConfig().isEnabled(service.getPathName()); }
/** * LayerGroupInfo has been created, add a matching {@link GeoServerTileLayer} * * @see CatalogLayerEventListener#handleAddEvent * @see GWC#add(GeoServerTileLayer) */ public void createTileLayer(LayerGroupInfo lgi) { GWCConfig defaults = mediator.getConfig(); GridSetBroker gridSetBroker = mediator.getGridSetBroker(); GeoServerTileLayer tileLayer = new GeoServerTileLayer(lgi, defaults, gridSetBroker); mediator.add(tileLayer); }
/** * LayerGroupInfo has been created, add a matching {@link GeoServerTileLayer} * * @see CatalogLayerEventListener#handleAddEvent * @see GWC#add(GeoServerTileLayer) */ public void createTileLayer(LayerGroupInfo lgi) { GWCConfig defaults = mediator.getConfig(); GridSetBroker gridSetBroker = mediator.getGridSetBroker(); GeoServerTileLayer tileLayer = new GeoServerTileLayer(lgi, defaults, gridSetBroker); mediator.add(tileLayer); }
@Override protected void setUpInternal() { GWC.get().getConfig().setDirectWMSIntegrationEnabled(false); }
@Override protected void setUpInternal() { GWC.get().getConfig().setDirectWMSIntegrationEnabled(false); }
/** * LayerInfo has been created, add a matching {@link GeoServerTileLayer} * * @see CatalogLayerEventListener#handleAddEvent * @see GWC#add(GeoServerTileLayer) */ void createTileLayer(final LayerInfo layerInfo) { GWCConfig defaults = mediator.getConfig(); if (defaults.isSane() && defaults.isCacheLayersByDefault()) { GridSetBroker gridSetBroker = mediator.getGridSetBroker(); GeoServerTileLayer tileLayer = new GeoServerTileLayer(layerInfo, defaults, gridSetBroker); mediator.add(tileLayer); } }
/** * LayerInfo has been created, add a matching {@link GeoServerTileLayer} * * @see CatalogLayerEventListener#handleAddEvent * @see GWC#add(GeoServerTileLayer) */ void createTileLayer(final LayerInfo layerInfo) { GWCConfig defaults = mediator.getConfig(); if (defaults.isSane() && defaults.isCacheLayersByDefault()) { GridSetBroker gridSetBroker = mediator.getGridSetBroker(); GeoServerTileLayer tileLayer = new GeoServerTileLayer(layerInfo, defaults, gridSetBroker); mediator.add(tileLayer); } }
/** * @see junit.framework.TestCase#setUp() */ protected void setUp() throws Exception { GWCConfig configDefaults = GWCConfig.getOldDefaults(); mockMediator = mock(GWC.class); when(mockMediator.getConfig()).thenReturn(configDefaults); GridSetBroker gridsets = new GridSetBroker(true, true); when(mockMediator.getGridSetBroker()).thenReturn(gridsets); mockLayerInfo = mock(LayerInfo.class); MetadataMap layerMetadata = new MetadataMap(); when(mockLayerInfo.getMetadata()).thenReturn(layerMetadata); mockLayerGroupInfo = mock(LayerGroupInfo.class); MetadataMap groupMetadata = new MetadataMap(); when(mockLayerGroupInfo.getMetadata()).thenReturn(groupMetadata); mockResourceInfo = mock(FeatureTypeInfo.class); mockNamespaceInfo = mock(NamespaceInfo.class); when(mockLayerGroupInfo.getName()).thenReturn(LAYER_GROUP_NAME); when(mockLayerGroupInfo.prefixedName()).thenReturn(LAYER_GROUP_NAME); when(mockResourceInfo.prefixedName()).thenReturn(PREFIXED_RESOURCE_NAME); when(mockResourceInfo.getName()).thenReturn(RESOURCE_NAME); when(mockResourceInfo.getNamespace()).thenReturn(mockNamespaceInfo); when(mockNamespaceInfo.getPrefix()).thenReturn(NAMESPACE_PREFIX); when(mockLayerInfo.getResource()).thenReturn(mockResourceInfo); listener = new CatalogLayerEventListener(mockMediator); }
public void testLayerGroupInfoLayersChanged() throws Exception { CatalogModifyEvent modifyEvent = mock(CatalogModifyEvent.class); when(modifyEvent.getSource()).thenReturn(mockLayerGroupInfo); when(modifyEvent.getPropertyNames()).thenReturn(Arrays.asList("layers")); List<LayerInfo> oldLayers = Collections.emptyList(); List<LayerInfo> newLayers = Collections.singletonList(mockLayerInfo); when(modifyEvent.getOldValues()).thenReturn(Collections.singletonList((Object) oldLayers)); when(modifyEvent.getNewValues()).thenReturn(Collections.singletonList((Object) newLayers)); // the tile layer must exist otherwise the event will be ignored GeoServerTileLayerInfo tileLayerInfo = TileLayerInfoUtil.loadOrCreate(mockLayerGroupInfo, mockMediator.getConfig()); GridSetBroker gridsets = new GridSetBroker(true, true); GeoServerTileLayer tileLayer = new GeoServerTileLayer(mockLayerGroupInfo, gridsets, tileLayerInfo); when(mockMediator.hasTileLayer(same(mockLayerGroupInfo))).thenReturn(true); when(mockMediator.getTileLayer(same(mockLayerGroupInfo))).thenReturn(tileLayer); listener.handleModifyEvent(modifyEvent); CatalogPostModifyEvent postModifyEvent = mock(CatalogPostModifyEvent.class); when(postModifyEvent.getSource()).thenReturn(mockLayerGroupInfo); listener.handlePostModifyEvent(postModifyEvent); verify(mockMediator).truncate(eq(LAYER_GROUP_NAME)); }
/** * Commented out for the moment, we need a new release of GWC public void testPreserveHeaders() throws Exception { MockHttpServletResponse response = getAsServletResponse("gwc/service/wms?service=wms&version=1.1.0&request=GetCapabilities"); assertEquals("application/vnd.ogc.wms_xml", response.getContentType()); assertEquals("inline;filename=wms-getcapabilities.xml", response.getHeader("content-disposition")); } */ public void testSaveConfig() throws Exception { GWCConfig config = GWC.get().getConfig(); // set a large gutter config.setGutter(100); // save the config GWC.get().saveConfig(config); // force a reload getGeoServer().reload(); // grab the config, make sure it was saved as expected assertEquals(100, GWC.get().getConfig().getGutter()); } }
public void testDirectWMSIntegrationWithVirtualServicesHiddenLayer() throws Exception { /* * Nothing special needs to be done at the GWC integration level for this to work. The hard * work should already be done by WMSWorkspaceQualifier so that when the request hits GWC * the layer name is already qualified */ final GWC gwc = GWC.get(); gwc.getConfig().setDirectWMSIntegrationEnabled(true); final String qualifiedName = super.getLayerId(BASIC_POLYGONS); final String localName = BASIC_POLYGONS.getLocalPart(); final TileLayer tileLayer = gwc.getTileLayerByName(qualifiedName); assertNotNull(tileLayer); boolean directWMSIntegrationEndpoint = true; String request = MockData.CDF_PREFIX // asking /geoserver/cdf/wms? for cite:BasicPolygons + "/" + buildGetMap(directWMSIntegrationEndpoint, localName, "EPSG:4326", null, tileLayer) + "&tiled=true"; MockHttpServletResponse response = getAsServletResponse(request); assertEquals(200, response.getStatusCode()); assertTrue(response.getContentType(), response.getContentType().startsWith("application/vnd.ogc.se_xml")); assertTrue(response.getOutputStreamContent(), response.getOutputStreamContent() .contains("Could not find layer cdf:BasicPolygons")); }
public void testDirectWMSIntegrationWithVirtualServices() throws Exception { final GWC gwc = GWC.get(); gwc.getConfig().setDirectWMSIntegrationEnabled(true); final String qualifiedName = super.getLayerId(BASIC_POLYGONS); final String localName = BASIC_POLYGONS.getLocalPart(); final TileLayer tileLayer = gwc.getTileLayerByName(qualifiedName); assertNotNull(tileLayer); boolean directWMSIntegrationEndpoint = true; String request = MockData.CITE_PREFIX + "/" + buildGetMap(directWMSIntegrationEndpoint, localName, "EPSG:4326", null, tileLayer) + "&tiled=true"; MockHttpServletResponse response = getAsServletResponse(request); assertEquals(200, response.getStatusCode()); assertEquals("image/png", response.getContentType()); assertEquals(qualifiedName, response.getHeader("geowebcache-layer")); }
/** * If direct WMS integration is enabled, a GetMap requests that hits the regular WMS but matches * a gwc tile should return with the proper {@code geowebcache-tile-index} HTTP response header. */ public void testDirectWMSIntegration() throws Exception { final GWC gwc = GWC.get(); gwc.getConfig().setDirectWMSIntegrationEnabled(true); final String layerName = BASIC_POLYGONS.getPrefix() + ":" + BASIC_POLYGONS.getLocalPart(); String request; MockHttpServletResponse response; request = buildGetMap(true, layerName, "EPSG:4326", null); response = getAsServletResponse(request); assertEquals(200, response.getStatusCode()); assertEquals("image/png", response.getContentType()); assertNull(response.getHeader("geowebcache-tile-index")); request = request + "&tiled=true"; response = getAsServletResponse(request); assertEquals(200, response.getErrorCode()); assertEquals("image/png", response.getContentType()); }
public void testDirectWMSIntegrationResponseHeaders() throws Exception { final GWC gwc = GWC.get(); gwc.getConfig().setDirectWMSIntegrationEnabled(true); final String layerName = BASIC_POLYGONS.getPrefix() + ":" + BASIC_POLYGONS.getLocalPart(); String request = buildGetMap(true, layerName, "EPSG:4326", null) + "&tiled=true"; MockHttpServletResponse response = getAsServletResponse(request); assertEquals(200, response.getStatusCode()); assertEquals("image/png", response.getContentType()); assertEquals(layerName, response.getHeader("geowebcache-layer")); assertEquals("[0, 0, 0]", response.getHeader("geowebcache-tile-index")); assertEquals("-180.0,-90.0,0.0,90.0", response.getHeader("geowebcache-tile-bounds")); assertEquals("EPSG:4326", response.getHeader("geowebcache-gridset")); assertEquals("EPSG:4326", response.getHeader("geowebcache-crs")); }
public void testDirectWMSIntegrationMaxAge() throws Exception { final GWC gwc = GWC.get(); gwc.getConfig().setDirectWMSIntegrationEnabled(true); final String layerName = BASIC_POLYGONS.getPrefix() + ":" + BASIC_POLYGONS.getLocalPart(); final String path = buildGetMap(true, layerName, "EPSG:4326", null) + "&tiled=true"; final String qualifiedName = super.getLayerId(BASIC_POLYGONS); final GeoServerTileLayer tileLayer = (GeoServerTileLayer) gwc.getTileLayerByName(qualifiedName); tileLayer.getLayerInfo().getResource().getMetadata().put("cachingEnabled", "true"); tileLayer.getLayerInfo().getResource().getMetadata().put("cacheAgeMax", 3456); MockHttpServletResponse response = getAsServletResponse(path); String cacheControl = response.getHeader("Cache-Control"); assertEquals("max-age=3456", cacheControl); assertNotNull(response.getHeader("Last-Modified")); tileLayer.getLayerInfo().getResource().getMetadata().put("cachingEnabled", "false"); response = getAsServletResponse(path); cacheControl = response.getHeader("Cache-Control"); assertEquals("no-cache", cacheControl); // make sure a boolean is handled, too - see comment in CachingWebMapService tileLayer.getLayerInfo().getResource().getMetadata().put("cachingEnabled", Boolean.FALSE); response = getAsServletResponse(path); cacheControl = response.getHeader("Cache-Control"); assertEquals("no-cache", cacheControl); }