public void testRenameDefaultStyle() throws Exception { // this is another case of an ignorable change. Renaming the default style shall have no // impact. listener.handleModifyEvent(styleNameModifyEvent); // a change in the name of the default style should not cause a truncate verify(mockMediator, never()).truncateByLayerAndStyle(anyString(), anyString()); // nor a save, as the default style name is dynamic verify(mockMediator, never()).save((GeoServerTileLayer) anyObject()); verify(mockTileLayer, atLeastOnce()).getInfo(); verify(mockTileLayerInfo, atLeastOnce()).cachedStyles(); }
TileLayerInfoUtil.setCachedStyles(info, defaultStyle, newStyles); mediator.save(tl);
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); } } }
GridSetBroker gridSetBroker = mediator.getGridSetBroker(); GeoServerTileLayer tileLayer = new GeoServerTileLayer(li, gridSetBroker, tileLayerInfo); mediator.save(tileLayer);
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)); }
public void testIgnorableChange() throws Exception { // not a name change styleNameModifyEvent.setPropertyNames(Arrays.asList("fileName")); listener.handleModifyEvent(styleNameModifyEvent); // name didn't change at all styleNameModifyEvent.setPropertyNames(Arrays.asList("name")); styleNameModifyEvent.setOldValues(Arrays.asList(STYLE_NAME)); styleNameModifyEvent.setNewValues(Arrays.asList(STYLE_NAME)); listener.handleModifyEvent(styleNameModifyEvent); // not a style change styleNameModifyEvent.setSource(mock(LayerInfo.class)); listener.handleModifyEvent(styleNameModifyEvent); // a change in the name of the default style should not cause a truncate verify(mockMediator, never()).truncateByLayerAndStyle(anyString(), anyString()); // nor a save, as the default style name is dynamic verify(mockMediator, never()).save((GeoServerTileLayer) anyObject()); verify(mockTileLayer, never()).getInfo(); verify(mockTileLayerInfo, never()).cachedStyles(); }
public void testLayerInfoDefaultStyleChanged() throws Exception { final String oldName = "oldStyle"; final String newName = "newStyle"; StyleInfo oldStyle = mock(StyleInfo.class); when(oldStyle.getName()).thenReturn(oldName); StyleInfo newStyle = mock(StyleInfo.class); when(newStyle.getName()).thenReturn(newName); when(mockLayerInfo.getDefaultStyle()).thenReturn(newStyle); CatalogModifyEvent modifyEvent = mock(CatalogModifyEvent.class); when(modifyEvent.getSource()).thenReturn(mockLayerInfo); when(modifyEvent.getPropertyNames()).thenReturn(Arrays.asList("defaultStyle")); when(modifyEvent.getOldValues()).thenReturn(Collections.singletonList((Object) oldStyle)); when(modifyEvent.getNewValues()).thenReturn(Collections.singletonList((Object) newStyle)); GeoServerTileLayer tileLayer = mock(GeoServerTileLayer.class); when(mockMediator.getTileLayerByName(eq(PREFIXED_RESOURCE_NAME))).thenReturn(tileLayer); // the tile layer must exist on the layer metadata otherwise the event will be ignored GeoServerTileLayerInfo info = TileLayerInfoUtil.loadOrCreate(mockLayerInfo, GWCConfig.getOldDefaults()); when(tileLayer.getInfo()).thenReturn(info); when(mockMediator.hasTileLayer(same(mockLayerInfo))).thenReturn(true); when(mockMediator.getTileLayer(same(mockLayerInfo))).thenReturn(tileLayer); listener.handleModifyEvent(modifyEvent); CatalogPostModifyEvent postModifyEvent = mock(CatalogPostModifyEvent.class); when(postModifyEvent.getSource()).thenReturn(mockLayerInfo); listener.handlePostModifyEvent(postModifyEvent); verify(mockMediator).truncateByLayerAndStyle(eq(PREFIXED_RESOURCE_NAME), eq(oldName)); verify(mockMediator).save(any(GeoServerTileLayer.class)); }
public void testModifyTileLayer() throws Exception { try { mediator.save(null); fail(); } catch (NullPointerException e) { assertTrue(true); } when(tld.modify(same(tileLayer))).thenThrow(new IllegalArgumentException()); try { mediator.save(tileLayer); fail(); } catch (IllegalArgumentException e) { assertTrue(true); } when(tld.modify(same(tileLayerGroup))).thenReturn(config); mediator.save(tileLayerGroup); verify(config, times(1)).save(); when(tld.modify(same(tileLayer))).thenReturn(config); doThrow(new IOException()).when(config).save(); try { mediator.save(tileLayer); } catch (RuntimeException e) { assertTrue(true); } }
verify(mockMediator).save(any(GeoServerTileLayer.class));
modifiedTileLayer = new GeoServerTileLayer(layerGroup, gridSetBroker, tileLayerInfo); mediator.save(modifiedTileLayer);
verify(mockMediator).save(captor.capture());
verify(mockMediator).save(captor.capture());
verify(mockMediator).save(captor.capture());
verify(mockMediator).save(captor.capture());
TileLayer layer = GWC.get().getTileLayerByName("cite:Lakes"); layer.setBlobStoreId(storeId); GWC.get().save(layer);