public void save(final GeoServerTileLayer layer) { checkNotNull(layer); log.info("Saving GeoSeverTileLayer " + layer.getName()); Configuration modifiedConfig = tld.modify(layer); try { modifiedConfig.save(); } catch (IOException e) { Throwable rootCause = Throwables.getRootCause(e); throw Throwables.propagate(rootCause); } }
@Override public boolean apply(GeoServerTileLayer tileLayer) { String layerName = tileLayer.getName(); if (-1 == layerName.indexOf(':')) { return false; } LayerInfo layerInfo = catalog.getLayerByName(layerName); if (layerInfo != null) { NamespaceInfo layerNamespace = layerInfo.getResource().getNamespace(); if (namespaceFilter.equals(layerNamespace)) { return true; } } return false; } });
private synchronized void checkGridSubsets() { if (this.subSets == null) { ReferencedEnvelope latLongBbox = getLatLonBbox(); try { this.subSets = getGrids(latLongBbox, gridSetBroker); } catch (ConfigurationException e) { String msg = "Can't create grids for '" + getName() + "': " + e.getMessage(); LOGGER.log(Level.WARNING, msg, e); setConfigErrorMessage(msg); } } }
private synchronized void checkGridSubsets() { if (this.subSets == null) { ReferencedEnvelope latLongBbox = getLatLonBbox(); try { this.subSets = getGrids(latLongBbox, gridSetBroker); } catch (ConfigurationException e) { String msg = "Can't create grids for '" + getName() + "': " + e.getMessage(); LOGGER.log(Level.WARNING, msg, e); setConfigErrorMessage(msg); } } }
/** * Returns the tile layers that refer to the given style, either as the tile layer's {@link * GeoServerTileLayer#getStyles() default style} or one of the {@link * GeoServerTileLayerInfoImpl#cachedStyles() cached styles}. * * <p>The result may be different from {@link #getLayerInfosFor(StyleInfo)} and {@link * #getLayerGroupsFor(StyleInfo)} as the {@link GeoServerTileLayerInfoImpl}'s backing each * {@link GeoServerTileLayer} may have assigned a subset of the layerinfo styles for caching. */ public List<GeoServerTileLayer> getTileLayersForStyle(final String styleName) { Iterable<GeoServerTileLayer> tileLayers = getGeoServerTileLayers(); List<GeoServerTileLayer> affected = new ArrayList<GeoServerTileLayer>(); for (GeoServerTileLayer tl : tileLayers) { try { GeoServerTileLayerInfo info = tl.getInfo(); String defaultStyle = tl.getStyles(); // may be null if backed by a LayerGroupInfo Set<String> cachedStyles = info.cachedStyles(); if (styleName.equals(defaultStyle) || cachedStyles.contains(styleName)) { affected.add(tl); } } catch (Exception e) { log.log(Level.SEVERE, "Failed to retrieve style info for layer" + tl.getName(), e); } } return affected; }
params.put("VERSION", "1.1.1"); params.put("REQUEST", "GetMap"); params.put("LAYERS", getName()); params.put("SRS", srs); params.put("FORMAT", format);
public void testRemoveTileLayers() throws Exception { try { mediator.removeTileLayers(null); } catch (NullPointerException e) { assertTrue(true); } when(tld.removeLayer(eq(tileLayer.getName()))).thenReturn(config); when(tld.removeLayer(eq(tileLayerGroup.getName()))).thenReturn(config); List<String> layerNames = Arrays.asList(tileLayer.getName(), tileLayerGroup.getName()); mediator.removeTileLayers(layerNames); verify(tld, times(1)).removeLayer(eq(tileLayer.getName())); verify(tld, times(1)).removeLayer(eq(tileLayerGroup.getName())); verify(config, times(1)).save(); }
@Override public boolean apply(GeoServerTileLayer tileLayer) { String layerName = tileLayer.getName(); if (-1 == layerName.indexOf(':')) { return false; } LayerInfo layerInfo = catalog.getLayerByName(layerName); if (layerInfo != null) { NamespaceInfo layerNamespace = layerInfo.getResource().getNamespace(); if (namespaceFilter.equals(layerNamespace)) { return true; } } return false; } });
private void mockTileLayerDispatcher() throws Exception { when(tld.getConfiguration(same(tileLayer))).thenReturn(config); when(tld.getConfiguration(same(tileLayerGroup))).thenReturn(config); when(tld.getConfiguration(eq(tileLayer.getName()))).thenReturn(config); when(tld.getConfiguration(eq(tileLayerGroup.getName()))).thenReturn(config); when(tld.getTileLayer(eq(tileLayer.getName()))).thenReturn(tileLayer); when(tld.getTileLayer(eq(tileLayerGroup.getName()))).thenReturn(tileLayerGroup); when(tld.getLayerNames()).thenReturn( ImmutableSet.of(tileLayer.getName(), tileLayerGroup.getName())); Iterable<TileLayer> tileLayers = ImmutableList.of((TileLayer) tileLayer, (TileLayer) tileLayerGroup); when(tld.getLayerList()).thenReturn(tileLayers); when(tld.layerExists(eq(tileLayer.getName()))).thenReturn(true); when(tld.layerExists(eq(tileLayerGroup.getName()))).thenReturn(true); }
public void testTruncateLayerFully() throws Exception { when(tld.getTileLayer(eq(tileLayerGroup.getName()))).thenThrow( new GeoWebCacheException("fake")); mediator.truncate(tileLayerGroup.getName()); verify(storageBroker, never()).deleteByGridSetId(anyString(), anyString()); mediator.truncate(tileLayer.getName()); verify(storageBroker, times(tileLayer.getGridSubsets().size())).deleteByGridSetId( anyString(), anyString()); }
/** * Overrides to return a dynamic view of the backing {@link LayerInfo} or {@link LayerGroupInfo} * metadata adapted to GWC * * @see org.geowebcache.layer.TileLayer#getMetaInformation() */ @Override public LayerMetaInformation getMetaInformation() { LayerMetaInformation meta = null; String title = getName(); String description = ""; List<String> keywords = Collections.emptyList(); List<ContactInformation> contacts = Collections.emptyList(); ResourceInfo resourceInfo = getResourceInfo(); if (resourceInfo != null) { title = resourceInfo.getTitle(); description = resourceInfo.getAbstract(); keywords = new ArrayList<String>(); for (KeywordInfo kw : resourceInfo.getKeywords()) { keywords.add(kw.getValue()); } } meta = new LayerMetaInformation(title, description, keywords, contacts); return meta; }
public void testReloadAndLayerRemovedExternally() throws Exception { final String removedLayer = tileLayer.getName(); final String remainingLayer = tileLayerGroup.getName(); final Set<String> layerNames = Sets.newHashSet(removedLayer, remainingLayer); when(tld.getLayerNames()).thenReturn(layerNames); doAnswer(new Answer<Void>() { @Override public Void answer(InvocationOnMock invocation) throws Throwable { layerNames.remove(removedLayer); return null; } }).when(tld).reInit(); ArgumentCaptor<String> argCaptor = ArgumentCaptor.forClass(String.class); mediator = spy(mediator); doReturn(true).when(mediator).layerRemoved(argCaptor.capture()); mediator.reload(); verify(tld, times(1)).reInit(); assertEquals(1, argCaptor.getAllValues().size()); assertEquals(removedLayer, argCaptor.getValue()); }
public void testTruncateByLayerAndStyle() throws Exception { String layerName = tileLayer.getName(); String styleName = "notACachedStyle"; mediator.truncateByLayerAndStyle(layerName, styleName); verify(tileBreeder, never()).dispatchTasks(any(GWCTask[].class)); styleName = layer.getDefaultStyle().getName(); mediator.truncateByLayerAndStyle(layerName, styleName); int expected = tileLayer.getGridSubsets().size() * tileLayer.getMimeTypes().size(); verify(tileBreeder, times(expected)).dispatchTasks(any(GWCTask[].class)); }
protected void setUp() throws Exception { mockMediator = mock(GWC.class); mockStyle = mock(StyleInfo.class); when(mockStyle.getName()).thenReturn(STYLE_NAME); mockResourceInfo = mock(FeatureTypeInfo.class); when(mockResourceInfo.prefixedName()).thenReturn(PREFIXED_RESOURCE_NAME); mockLayerInfo = mock(LayerInfo.class); when(mockLayerInfo.getResource()).thenReturn(mockResourceInfo); mockTileLayer = mock(GeoServerTileLayer.class); mockTileLayerInfo = mock(GeoServerTileLayerInfoImpl.class); ImmutableSet<String> empty = ImmutableSet.of(); when(mockTileLayerInfo.cachedStyles()).thenReturn(empty); when(mockTileLayer.getLayerInfo()).thenReturn(mockLayerInfo); when(mockTileLayer.getInfo()).thenReturn(mockTileLayerInfo); when(mockTileLayer.getName()).thenReturn(PREFIXED_RESOURCE_NAME); when(mockMediator.getTileLayersForStyle(eq(STYLE_NAME))).thenReturn( Collections.singletonList(mockTileLayer)); listener = new CatalogStyleChangeListener(mockMediator); styleNameModifyEvent = new CatalogModifyEventImpl(); styleNameModifyEvent.setSource(mockStyle); styleNameModifyEvent.setPropertyNames(Arrays.asList("name")); styleNameModifyEvent.setOldValues(Arrays.asList(STYLE_NAME)); styleNameModifyEvent.setNewValues(Arrays.asList(STYLE_NAME_MODIFIED)); }
public void testGetName() { layerInfoTileLayer = new GeoServerTileLayer(layerInfo, defaults, gridSetBroker); assertEquals(tileLayerName(layerInfo), layerInfoTileLayer.getName()); layerGroupInfoTileLayer = new GeoServerTileLayer(layerGroup, defaults, gridSetBroker); assertEquals(GWC.tileLayerName(layerGroup), layerGroupInfoTileLayer.getName()); }
public void testModifyGridsetTruncates() throws Exception { final String oldName = "EPSG:4326"; final String newName = "MyEPSG:4326"; final GridSet oldGridset = gridSetBroker.get(oldName); final GridSet newGridset; { XMLGridSet xmlGridSet = new XMLGridSet(oldGridset); xmlGridSet.setName(newName); // make it so the gridset forces truncation xmlGridSet.setAlignTopLeft(!xmlGridSet.getAlignTopLeft()); newGridset = xmlGridSet.makeGridSet(); } XMLConfiguration xmlConfig = mock(XMLConfiguration.class); mediator = spy(mediator); when(mediator.getXmlConfiguration()).thenReturn(xmlConfig); when(tld.getConfiguration(same(tileLayer))).thenReturn(config); when(tld.getConfiguration(same(tileLayerGroup))).thenReturn(config); mediator.modifyGridSet(oldName, newGridset); verify(storageBroker, times(1)).deleteByGridSetId(eq(tileLayer.getName()), eq(oldName)); verify(storageBroker, times(1)) .deleteByGridSetId(eq(tileLayerGroup.getName()), eq(oldName)); }
public void testRemoveAllLayerGridsetsDisablesLayer() throws Exception { when(tld.getConfiguration(same(tileLayer))).thenReturn(config); when(tld.getConfiguration(same(tileLayerGroup))).thenReturn(config); when(tld.modify(same(tileLayer))).thenReturn(config); when(tld.modify(same(tileLayerGroup))).thenReturn(config); when(tld.removeGridset(eq("EPSG:4326"))).thenReturn(config); when(tld.removeGridset(eq("EPSG:900913"))).thenReturn(config); // sanity check before modification assertTrue(tileLayer.getInfo().isEnabled()); assertTrue(tileLayer.getInfo().isEnabled()); mediator.removeGridSets(ImmutableSet.of("EPSG:900913", "EPSG:4326")); verify(config, times(1)).save();// all other checks are in testRemoveGridsets verify(storageBroker, times(1)).deleteByGridSetId(eq(tileLayer.getName()), eq("EPSG:4326")); verify(storageBroker, times(1)).deleteByGridSetId(eq(tileLayerGroup.getName()), eq("EPSG:900913")); verify(storageBroker, times(1)).deleteByGridSetId(eq(tileLayer.getName()), eq("EPSG:4326")); verify(storageBroker, times(1)).deleteByGridSetId(eq(tileLayerGroup.getName()), eq("EPSG:900913")); assertTrue(tileLayer.getGridSubsets().isEmpty()); assertTrue(tileLayerGroup.getGridSubsets().isEmpty()); // layers ended up with no gridsubsets, shall have been disabled assertFalse(tileLayer.getInfo().isEnabled()); assertFalse(tileLayerGroup.getInfo().isEnabled()); }
@SuppressWarnings({ "unchecked", "rawtypes" }) public void testGetTile() throws Exception { Resource mockResult = mock(Resource.class); ArgumentCaptor<Map> argument = ArgumentCaptor.forClass(Map.class); Mockito.when(mockGWC.dispatchOwsRequest(argument.capture(), (Cookie[]) anyObject())) .thenReturn(mockResult); BufferedImage image = new BufferedImage(256, 256, BufferedImage.TYPE_INT_ARGB); RenderedImageMap fakeDispatchedMap = new RenderedImageMap(new WMSMapContent(), image, "image/png"); RenderedImageMapResponse fakeResponseEncoder = mock(RenderedImageMapResponse.class); MimeType mimeType = MimeType.createFromFormat("image/png"); when(mockGWC.getResponseEncoder(eq(mimeType), (RenderedImageMap) anyObject())).thenReturn( fakeResponseEncoder); StorageBroker storageBroker = mock(StorageBroker.class); when(storageBroker.get((TileObject) anyObject())).thenReturn(false); layerInfoTileLayer = new GeoServerTileLayer(layerInfo, defaults, gridSetBroker); MockHttpServletRequest servletReq = new MockHttpServletRequest(); HttpServletResponse servletResp = new MockHttpServletResponse(); long[] tileIndex = { 0, 0, 0 }; ConveyorTile tile = new ConveyorTile(storageBroker, layerInfoTileLayer.getName(), "EPSG:4326", tileIndex, mimeType, null, servletReq, servletResp); GeoServerTileLayer.WEB_MAP.set(fakeDispatchedMap); ConveyorTile returned = layerInfoTileLayer.getTile(tile); assertNotNull(returned); assertNotNull(returned.getBlob()); assertEquals(CacheResult.MISS, returned.getCacheResult()); assertEquals(200, returned.getStatus()); verify(storageBroker, atLeastOnce()).get((TileObject) anyObject()); verify(mockGWC, times(1)).getResponseEncoder(eq(mimeType), isA(RenderedImageMap.class)); }
private void testModifyLayer(GeoServerTileLayer orig) { GeoServerTileLayerInfo newState = TileLayerInfoUtil.create(defaults); newState.setId(orig.getInfo().getId()); newState.setName(orig.getInfo().getName()); assertFalse(orig.equals(newState)); final GeoServerTileLayer modified; if (orig.getLayerInfo() != null) { modified = new GeoServerTileLayer(orig.getLayerInfo(), gridSetBroker, newState); } else { modified = new GeoServerTileLayer(orig.getLayerGroupInfo(), gridSetBroker, newState); } assertEquals(orig.getInfo(), config.getTileLayer(orig.getName()).getInfo()); config.modifyLayer(modified); assertEquals(newState, config.getTileLayer(orig.getName()).getInfo()); final String origName = orig.getName(); modified.getInfo().setName("changed"); config.modifyLayer(modified); assertNull(config.getTileLayer(origName)); assertFalse(config.getTileLayerNames().contains(origName)); }
request.setWidth(256); request.setHeight(256); rawKvp.put("layers", tileLayer.getName());