public Set<String> layerFormats(String layerName) { TileLayer layer; try { layer = layers.getTileLayer(layerName); } catch (GeoWebCacheException e) { throw Throwables.propagate(e); } return layer.getMimeTypes() .stream() .map(MimeType::getFileExtension) .collect(Collectors.toSet()); }
/** * Get an iterator over the layers. * * @return */ public Iterable<TileLayer> getLayers() { return this.layerDispatcher.getLayerList(); } }
/** * Completely and persistently eliminates, including the cached contents, the given tile layers. * * @param tileLayerNames */ public void removeTileLayers(final List<String> tileLayerNames) { checkNotNull(tileLayerNames); Set<Configuration> confsToSave = new HashSet<Configuration>(); for (String tileLayerName : tileLayerNames) { Configuration configuration = tld.removeLayer(tileLayerName); if (configuration != null) { confsToSave.add(configuration); } } for (Configuration conf : confsToSave) { try { conf.save(); } catch (IOException e) { log.log(Level.WARNING, "Error saving GWC Configuration " + conf.getIdentifier(), e); } } }
/** * Completely and persistently eliminates, including the cached contents, the given tile layers. * * @param tileLayerNames */ public void removeTileLayers(final List<String> tileLayerNames) { checkNotNull(tileLayerNames); for (String tileLayerName : tileLayerNames) { try { tld.removeLayer(tileLayerName); } catch (IllegalArgumentException e) { log.log( Level.WARNING, "Error saving GWC Configuration " + tld.getConfiguration(tileLayerName).getIdentifier(), e); } } }
@RequestMapping(value = "/layers/{layerName}", method = RequestMethod.PUT) public ResponseEntity<?> layerPut(@RequestBody TileLayer tl, @PathVariable String layerName) throws GeoWebCacheException, RestException, IOException { tl = checkLayer(layerName, tl); TileLayer testtl = null; try { testtl = findTileLayer(tl.getName(), layerDispatcher); } catch (RestException re) { // This is the expected behavior, it should not exist } if (testtl == null) { layerDispatcher.addLayer(tl); } else { layerDispatcher.modify(tl); } return new ResponseEntity<Object>("layer saved", HttpStatus.OK); }
protected static TileLayer findTileLayer(String layerName, TileLayerDispatcher layerDispatcher) { if (layerName == null || layerName.length() == 0) { throw new RestletException("Layer not specified", Status.CLIENT_ERROR_BAD_REQUEST); } if (!layerDispatcher.layerExists(layerName)) { throw new RestletException("Unknown layer: " + layerName, Status.CLIENT_ERROR_NOT_FOUND); } TileLayer layer; try { layer = layerDispatcher.getTileLayer(layerName); } catch (GeoWebCacheException gwce) { throw new RestletException("Encountered error: " + gwce.getMessage(), Status.SERVER_ERROR_INTERNAL); } return layer; } }
TileLayer toppStates = createMockLayer("topp:states"); TileLayer raster = createMockLayer("raster test layer"); EasyMock.expect(tld.getTileLayer(EasyMock.eq("topp:states"))) .andReturn(toppStates) .anyTimes(); EasyMock.expect(tld.getTileLayer(EasyMock.eq("raster test layer"))) .andReturn(raster) .anyTimes(); tileLayers.add(toppStates); tileLayers.add(raster); EasyMock.expect(tld.getLayerList()).andReturn(tileLayers).anyTimes(); EasyMock.replay(tld);
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); }
new LayerCacheInfoBuilder(cacheRoot, cleanUpExecutorService, quotaUsageMonitor); for (String layerName : tileLayerDispatcher.getLayerNames()) { TileLayer tileLayer; try { tileLayer = tileLayerDispatcher.getTileLayer(layerName); } catch (GeoWebCacheException e) { log.debug(e);
@Test public void testRemoveLayer() { String layerToRemove = GWCConfigIntegrationTestData.LAYER_TOPP_STATES; tileLayerDispatcher.removeLayer(layerToRemove); assertFalse(tileLayerDispatcher.getLayerNames().contains(layerToRemove)); try { tileLayerDispatcher.getTileLayer(layerToRemove); fail("Expected exception when trying to get removed layer"); } catch (GeoWebCacheException e) { } }
@Test public void testAddLayer() throws GeoWebCacheException { String layerName = "newLayer"; WMSLayer layer = new WMSLayer( layerName, new String[] {"http://example.com/"}, null, null, null, null, null, null, null, false, null); tileLayerDispatcher.addLayer(layer); assertTrue(tileLayerDispatcher.getLayerNames().contains(layerName)); assertEquals(layer, tileLayerDispatcher.getTileLayer(layerName)); }
@Test public void testModifyLayer() throws GeoWebCacheException { String modifiedLayerName = GWCConfigIntegrationTestData.LAYER_TOPP_STATES; TileLayer layer = tileLayerDispatcher.getTileLayer(modifiedLayerName); layer.removeGridSubset(GWCConfigIntegrationTestData.GRIDSET_EPSG2163); boolean advertised = !layer.isAdvertised(); layer.setAdvertised(advertised); tileLayerDispatcher.modify(layer); TileLayer modifiedLayer = tileLayerDispatcher.getTileLayer(modifiedLayerName); assertEquals(layer, modifiedLayer); assertEquals(advertised, modifiedLayer.isAdvertised()); assertNull(modifiedLayer.getGridSubset(GWCConfigIntegrationTestData.GRIDSET_EPSG2163)); }
@Test public void testLayerList() { int count = tileLayerDispatcher.getLayerCount(); Set<String> names = tileLayerDispatcher.getLayerNames(); int i = 0; for (TileLayer layer : tileLayerDispatcher.getLayerList()) { assertTrue(names.contains(layer.getName())); i++; } assertEquals(count, i); assertEquals(count, names.size()); }
String transientLayerName = "transientLayer"; TileLayer layer = tileLayerDispatcher.getTileLayer(duplicateLayerName); try { tileLayerDispatcher.addLayer(layer); fail("Expected error when adding a layer that already exists"); } catch (IllegalArgumentException e) { tileLayerDispatcher.addLayer(layer); fail("Expected error when adding a transient layer"); } catch (IllegalArgumentException e) { tileLayerDispatcher.addLayer(null); fail("Expected error when adding a null layer"); } catch (NullPointerException e) {
public synchronized void removeGridSetRecursive(String gridsetToRemove) { Collection<TileLayer> deletedLayers = new LinkedList<>(); try { for (TileLayer tl : getLayerList()) { if (Objects.nonNull(tl.getGridSubset(gridsetToRemove))) { this.removeLayer(tl.getName()); deletedLayers.add(tl);
/** * Renames an existing blob store. * * @param oldName The name of the existing blob store * @param newName The name to rename the blob store to * @throws IllegalArgumentException */ public synchronized void renameBlobStore(final String oldName, final String newName) throws NoSuchElementException, IllegalArgumentException { BlobStoreConfiguration config = getConfiguration(oldName); config.renameBlobStore(oldName, newName); // update layers for (TileLayer layer : layers.getLayerList()) { if (oldName.equals(layer.getBlobStoreId())) { layer.setBlobStoreId(newName); layers.modify(layer); } } }
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()); }
/** @see TileLayerDispatcher#getLayerNames() */ public Set<String> getLayerNames() { return tileLayerDispatcher.getLayerNames(); }
/** * Modifies a {@link TileLayer} via the {@link TileLayerDispatcher}, and logs the change. Only * affects the GeoWebCache configuration. * * @param layer The layer to save. */ public void save(final TileLayer layer) { checkNotNull(layer); log.info("Saving GeoSeverTileLayer " + layer.getName()); tld.modify(layer); }
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()); }