/** @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(); }
lock.releaseWriteLock(); save();
lock.releaseWriteLock(); save();
lock.releaseWriteLock(); save();
public void testSaveRename() { GeoServerTileLayerInfo originalState = layerInfo1; GeoServerTileLayerInfo forceState1 = TileLayerInfoUtil.loadOrCreate(layer1, defaults); when(tileLayerCatalog.save(same(forceState1))).thenReturn(originalState); forceState1.setName("newName"); config.modifyLayer(new GeoServerTileLayer(layer1, gridSetBroker, forceState1)); verify(mockMediator, never()).layerRemoved(anyString()); verify(mockMediator, never()).layerRenamed(anyString(), anyString()); config.save(); verify(tileLayerCatalog, times(1)).save(same(forceState1)); // and gwc has been instructed on the changes verify(mockMediator, times(1)).layerRenamed(eq(layerInfo1.getName()), eq("newName")); }
public void testNoGeometry() throws Exception { org.opengis.feature.type.FeatureType featureTypeWithNoGeometry = mock(org.opengis.feature.type.FeatureType.class); when(featureTypeWithNoGeometry.getGeometryDescriptor()).thenReturn(null); org.geoserver.catalog.FeatureTypeInfo resourceWithNoGeometry = mock(org.geoserver.catalog.FeatureTypeInfo.class); when(resourceWithNoGeometry.getFeatureType()).thenReturn(featureTypeWithNoGeometry); LayerInfo layerWithNoGeometry = mockLayer("layerWithNoGeometry", new String[]{}, LayerInfo.Type.VECTOR); layerWithNoGeometry.setResource(resourceWithNoGeometry); GeoServerTileLayer tl = mock(GeoServerTileLayer.class); GeoServerTileLayerInfo info = new GeoServerTileLayerInfoImpl(); info.setId("layerWithNoGeometry"); info.setName("layerWithNoGeometry"); when(tl.getId()).thenReturn("layerWithNoGeometry"); when(tl.getInfo()).thenReturn(info); when(tl.getLayerInfo()).thenReturn(layerWithNoGeometry); when(catalog.getLayer(layerWithNoGeometry.getId())).thenReturn(layerWithNoGeometry); when(catalog.getLayerByName(eq(tileLayerName(layerWithNoGeometry)))).thenReturn( layerWithNoGeometry); config.addLayer(tl); config.save(); verify(this.tileLayerCatalog, never()).save(info); } }
config.addLayer(new GeoServerTileLayer(groupWithNoTileLayer, gridSetBroker, addedState2)); config.save();