@Override public String getId() { return info.getId(); }
@Override public String getId() { return info.getId(); }
/** * {@link TileLayerDispatcher} is requesting to remove the layer named after {@code layerName} * * @see org.geowebcache.config.Configuration#removeLayer(java.lang.String) * @return {@code true} if the layer was removed, false if it didn't exist */ @Override public boolean removeLayer(final String layerName) { checkNotNull(layerName); lock.writeLock().lock(); try { GeoServerTileLayerInfo tileLayerInfo = getTileLayerInfoByName(layerName); if (tileLayerInfo != null) { final String layerId = tileLayerInfo.getId(); pendingModications.remove(layerId); pendingDeletes.add(layerId); layerCache.invalidate(layerId); return true; } else { return false; } } finally { lock.writeLock().unlock(); } }
private GeoServerTileLayerInfo getTileLayerInfoByName(final String layerName) { GeoServerTileLayerInfo tileLayerInfo = null; // check pending modifs first in case name changed if (!pendingModications.isEmpty()) { for (GeoServerTileLayerInfo info : pendingModications.values()) { String name = info.getName(); if (name.equals(layerName)) { tileLayerInfo = info; break; } } } if (null == tileLayerInfo) { tileLayerInfo = tileLayerCatalog.getLayerByName(layerName); if (null == tileLayerInfo) { return null; } if (pendingDeletes.contains(tileLayerInfo.getId())) { return null; } if (pendingModications.containsKey(tileLayerInfo.getId())) { // found in catalog but not in pending modifications, means name changed return null; } } return tileLayerInfo; }
private GeoServerTileLayerInfo getTileLayerInfoByName(final String layerName) { GeoServerTileLayerInfo tileLayerInfo = null; // check pending modifs first in case name changed if (!pendingModications.isEmpty()) { for (GeoServerTileLayerInfo info : pendingModications.values()) { String name = info.getName(); if (name.equals(layerName)) { tileLayerInfo = info; break; } } } if (null == tileLayerInfo) { tileLayerInfo = tileLayerCatalog.getLayerByName(layerName); if (null == tileLayerInfo) { return null; } if (pendingDeletes.contains(tileLayerInfo.getId())) { return null; } if (pendingModications.containsKey(tileLayerInfo.getId())) { // found in catalog but not in pending modifications, means name changed return null; } } return tileLayerInfo; }
/** * @see org.geowebcache.config.Configuration#modifyLayer(org.geowebcache.layer.TileLayer) */ @Override public synchronized void modifyLayer(TileLayer tl) throws NoSuchElementException { checkNotNull(tl, "TileLayer is null"); checkArgument(canSave(tl), "Can't save TileLayer of type ", tl.getClass()); GeoServerTileLayer tileLayer = (GeoServerTileLayer) tl; checkNotNull(tileLayer.getInfo(), "GeoServerTileLayerInfo is null"); checkNotNull(tileLayer.getInfo().getId(), "id is null"); checkNotNull(tileLayer.getInfo().getName(), "name is null"); final GeoServerTileLayerInfo info = tileLayer.getInfo(); lock.writeLock().lock(); try { final String layerId = info.getId(); // check pendingModifications too to catch unsaved adds boolean exists = pendingModications.containsKey(layerId) || tileLayerCatalog.exists(layerId); checkArgument(exists, "No GeoServerTileLayer named '" + info.getName() + "' exists"); pendingModications.put(layerId, info); layerCache.invalidate(layerId); } finally { lock.writeLock().unlock(); } }
GeoServerTileLayer tileLayer = (GeoServerTileLayer) tl; checkNotNull(tileLayer.getInfo(), "GeoServerTileLayerInfo is null"); checkNotNull(tileLayer.getInfo().getId(), "id is null"); checkNotNull(tileLayer.getInfo().getName(), "name is null"); boolean pending = pendingModications.containsKey(info.getId()); boolean exists = null != tileLayerCatalog.getLayerById(info.getId()); boolean notExists = !pending && !exists; if (pendingDeletes.remove(info.getId())) { LOGGER.finer("Adding a new layer " + info.getName() + " before saving the deleted one with the same name"); pendingModications.put(info.getId(), info); } finally { lock.writeLock().unlock();
private void persist(GeoServerTileLayerInfo real) throws IOException { final String tileLayerId = real.getId(); File file = getFile(tileLayerId, false); boolean cleanup = false;
GeoServerTileLayer tileLayer = (GeoServerTileLayer) tl; checkNotNull(tileLayer.getInfo(), "GeoServerTileLayerInfo is null"); checkNotNull(tileLayer.getInfo().getId(), "id is null"); checkNotNull(tileLayer.getInfo().getName(), "name is null"); boolean pending = pendingModications.containsKey(info.getId()); boolean exists = null != tileLayerCatalog.getLayerById(info.getId()); boolean notExists = !pending && !exists; notExists, "A GeoServerTileLayer named '" + info.getName() + "' already exists"); if (pendingDeletes.remove(info.getId())) { LOGGER.finer( "Adding a new layer " + " before saving the deleted one with the same id"); pendingModications.put(info.getId(), info); } finally { lock.releaseWriteLock();
/** @see TileLayerConfiguration#modifyLayer(TileLayer) */ @Override public synchronized void modifyLayer(TileLayer tl) throws NoSuchElementException { checkNotNull(tl, "TileLayer is null"); checkArgument(canSave(tl), "Can't save TileLayer of type ", tl.getClass()); GeoServerTileLayer tileLayer = (GeoServerTileLayer) tl; checkNotNull(tileLayer.getInfo(), "GeoServerTileLayerInfo is null"); checkNotNull(tileLayer.getInfo().getId(), "id is null"); checkNotNull(tileLayer.getInfo().getName(), "name is null"); final GeoServerTileLayerInfo info = tileLayer.getInfo(); lock.acquireWriteLock(); try { final String layerId = info.getId(); // check pendingModifications too to catch unsaved adds boolean exists = pendingModications.containsKey(layerId) || tileLayerCatalog.exists(layerId); if (!exists) { throw new NoSuchElementException( "No GeoServerTileLayer named '" + info.getName() + "' exists"); } pendingModications.put(layerId, info); layerCache.invalidate(layerId); } finally { lock.releaseWriteLock(); } save(); }
GeoServerTileLayerInfo tileLayerInfo = getTileLayerInfoByName(layerName); if (tileLayerInfo != null) { final String layerId = tileLayerInfo.getId(); pendingModications.remove(layerId);
private void persist(GeoServerTileLayerInfo real) throws IOException { final String tileLayerId = real.getId(); Resource file = getFile(tileLayerId); boolean cleanup = false;
public void testSave() { when(tileLayerCatalog.delete(eq(layerInfo2.getId()))).thenReturn(layerInfo2); assertTrue(config.removeLayer(layerInfo2.getName())); when(tileLayerCatalog.delete(eq(groupInfo1.getId()))).thenReturn(groupInfo1); assertTrue(config.removeLayer(groupInfo1.getName())); doThrow(new IllegalArgumentException("failedDelete")).when(tileLayerCatalog).delete(
GeoServerTileLayerInfo info = (GeoServerTileLayerInfo) context.convertAnother(current, type); String id = info.getId(); String name = info.getName(); if (id != null && id.length() == 0) {
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)); }