public static void checkAutomaticStyles(final LayerInfo layer, GeoServerTileLayerInfo layerInfo) { if (layerInfo.isAutoCacheStyles() && layer.getStyles() != null && layer.getStyles().size() > 0) { if (null == findParameterFilter("STYLES", layerInfo.getParameterFilters())) { String defaultStyle = layer.getDefaultStyle() == null ? null : layer .getDefaultStyle().getName(); Set<String> cachedStyles = new HashSet<String>(); for (StyleInfo s : layer.getStyles()) { if (s != null) { cachedStyles.add(s.getName()); } } setCachedStyles(layerInfo, defaultStyle, cachedStyles); } } }
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); } } }
public void testRenameAlternateStyle() throws Exception { Set<ParameterFilter> params = new HashSet<ParameterFilter>(); when(mockTileLayerInfo.getParameterFilters()).thenReturn(params); TileLayerInfoUtil.setCachedStyles(mockTileLayerInfo, null, ImmutableSet.of(STYLE_NAME)); assertEquals(1, params.size()); ImmutableSet<String> styles = ImmutableSet.of(STYLE_NAME); when(mockTileLayerInfo.cachedStyles()).thenReturn(styles); listener.handleModifyEvent(styleNameModifyEvent); assertEquals(1, params.size()); ParameterFilter updated = params.iterator().next(); assertTrue(updated instanceof StringParameterFilter); assertEquals(Lists.newArrayList(STYLE_NAME_MODIFIED), ((StringParameterFilter) updated).getValues()); verify(mockTileLayer, times(1)).resetParameterFilters(); verify(mockMediator, times(1)).truncateByLayerAndStyle(eq(PREFIXED_RESOURCE_NAME), eq(STYLE_NAME)); verify(mockMediator, times(1)).save(same(mockTileLayer)); }
String defaultStyle = layerInfo.getDefaultStyle() == null ? null : layerInfo .getDefaultStyle().getName(); TileLayerInfoUtil.setCachedStyles(info, defaultStyle, newStyles);
public static GeoServerTileLayerInfoImpl load(final LayerInfo layer) { MetadataMap metadataMap = layer.getMetadata(); if (!hasTileLayerDef(metadataMap)) { return null; } GeoServerTileLayerInfoImpl tileLayerInfo = load(metadataMap); if (metadataMap.containsKey(CONFIG_KEY_CACHED_STYLES)) { final String defaultStyle = layer.getDefaultStyle() == null ? "" : layer .getDefaultStyle().getName(); String cachedStylesStr = metadataMap.get(CONFIG_KEY_CACHED_STYLES, String.class); Set<String> cachedStyles = unmarshalSet(cachedStylesStr); TileLayerInfoUtil.setCachedStyles(tileLayerInfo, defaultStyle, cachedStyles); } else if (tileLayerInfo.isAutoCacheStyles()) { if (layer.getStyles() != null && layer.getStyles().size() > 0) { final String defaultStyle = layer.getDefaultStyle() == null ? "" : layer .getDefaultStyle().getName(); Set<String> cachedStyles = new HashSet<String>(); for (StyleInfo style : layer.getStyles()) { cachedStyles.add(style.getName()); } TileLayerInfoUtil.setCachedStyles(tileLayerInfo, defaultStyle, cachedStyles); } } tileLayerInfo.setName(tileLayerName(layer)); tileLayerInfo.setId(layer.getId()); return tileLayerInfo; }
public void testCreateLayerInfoAutoCacheStyles() { GeoServerTileLayerInfo info = defaultVectorInfo; info.setAutoCacheStyles(true); defaults.setCacheNonDefaultStyles(true); LayerInfoImpl layer = mockLayer("testLayer", new String[]{"style1", "style2"}, LayerInfoImpl.Type.RASTER); GeoServerTileLayerInfo actual; actual = TileLayerInfoUtil.loadOrCreate(layer, defaults); TileLayerInfoUtil.setCachedStyles(info, "default", ImmutableSet.of("style1", "style2")); assertEquals(info.cachedStyles(), actual.cachedStyles()); layer.setDefaultStyle(null); TileLayerInfoUtil.setCachedStyles(info, "", ImmutableSet.of("style1", "style2")); actual = TileLayerInfoUtil.loadOrCreate(layer, defaults); assertEquals(ImmutableSet.of("style1", "style2"), actual.cachedStyles()); }
public void testLoadLayerInfoAutoCacheStyles() { GeoServerTileLayerInfo info = defaultVectorInfo; info.setAutoCacheStyles(true); LayerInfoImpl layer = mockLayer("testLayer", new String[]{"style1", "style2"}, LayerInfoImpl.Type.RASTER); assertNull(LegacyTileLayerInfoLoader.load(layer)); LegacyTileLayerInfoLoader.save(info, layer.getMetadata()); GeoServerTileLayerInfo actual; actual = LegacyTileLayerInfoLoader.load(layer); TileLayerInfoUtil.setCachedStyles(info, "default", ImmutableSet.of("style1", "style2")); info.setId(layer.getId()); info.setName(tileLayerName(layer)); assertEquals(info, actual); layer.setDefaultStyle(null); TileLayerInfoUtil.setCachedStyles(info, null, ImmutableSet.of("style1", "style2")); actual = LegacyTileLayerInfoLoader.load(layer); assertEquals(ImmutableSet.of("style1", "style2"), actual.cachedStyles()); }
public void testLoadLayerInfoExtraStyles() { GeoServerTileLayerInfo info = defaultVectorInfo; info.setAutoCacheStyles(false); TileLayerInfoUtil.setCachedStyles(info, "default", ImmutableSet.of("style1")); LayerInfoImpl layer = mockLayer("testLayer", new String[]{"style1", "style2"}, LayerInfoImpl.Type.RASTER); assertNull(LegacyTileLayerInfoLoader.load(layer)); LegacyTileLayerInfoLoader.save(info, layer.getMetadata()); GeoServerTileLayerInfo actual; actual = LegacyTileLayerInfoLoader.load(layer); info.setId(layer.getId()); info.setName(tileLayerName(layer)); assertEquals(info, actual); layer.setDefaultStyle(null); TileLayerInfoUtil.setCachedStyles(info, null, ImmutableSet.of("style1")); LegacyTileLayerInfoLoader.save(info, layer.getMetadata()); actual = LegacyTileLayerInfoLoader.load(layer); assertEquals(ImmutableSet.of("style1"), actual.cachedStyles()); }
public static GeoServerTileLayerInfoImpl load(final LayerInfo layer) { MetadataMap metadataMap = layer.getMetadata(); if (!hasTileLayerDef(metadataMap)) { return null; } GeoServerTileLayerInfoImpl tileLayerInfo = load(metadataMap); if (metadataMap.containsKey(CONFIG_KEY_CACHED_STYLES)) { final String defaultStyle = layer.getDefaultStyle() == null ? "" : layer.getDefaultStyle().prefixedName(); String cachedStylesStr = metadataMap.get(CONFIG_KEY_CACHED_STYLES, String.class); Set<String> cachedStyles = unmarshalSet(cachedStylesStr); TileLayerInfoUtil.setCachedStyles(tileLayerInfo, defaultStyle, cachedStyles); } TileLayerInfoUtil.checkAutomaticStyles(layer, tileLayerInfo); tileLayerInfo.setName(tileLayerName(layer)); tileLayerInfo.setId(layer.getId()); return tileLayerInfo; }