private void handleStyleRenamed(final String oldStyleName, final String newStyleName) { if (oldStyleName.equals(newStyleName)) { return; } List<GeoServerTileLayer> affectedLayers; affectedLayers = mediator.getTileLayersForStyle(oldStyleName); for (GeoServerTileLayer tl : affectedLayers) { LayerInfo layerInfo = tl.getLayerInfo(); if (layerInfo == null) { // no extra styles for layer groups continue; } GeoServerTileLayerInfo info = tl.getInfo(); ImmutableSet<String> styleNames = info.cachedStyles(); if (styleNames.contains(oldStyleName)) { tl.resetParameterFilters(); // pity, we don't have a way to just rename a style in GWC mediator.truncateByLayerAndStyle(tl.getName(), oldStyleName); Set<String> newStyles = new HashSet<String>(styleNames); newStyles.remove(oldStyleName); newStyles.add(newStyleName); String defaultStyle = layerInfo.getDefaultStyle() == null ? null : layerInfo.getDefaultStyle().prefixedName(); TileLayerInfoUtil.setCachedStyles(info, defaultStyle, newStyles); mediator.save(tl); } } }
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)); }
affectedLayers = mediator.getTileLayersForStyle(oldStyleName);