Skip to content

Commit

Permalink
[GEOS-7959] Disallow renaming, moving or deleting default styles from…
Browse files Browse the repository at this point in the history
… the catalog
  • Loading branch information
tbarsballe committed May 26, 2017
1 parent e1c38bb commit ae1bdf3
Show file tree
Hide file tree
Showing 2 changed files with 71 additions and 1 deletion.
25 changes: 25 additions & 0 deletions src/main/src/main/java/org/geoserver/catalog/impl/CatalogImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -1390,6 +1390,21 @@ public ValidationResult validate( StyleInfo style, boolean isNew ) {
throw new IllegalArgumentException(msg);
}

if (!isNew) {
StyleInfo current = getStyle(style.getId());

//Default style validation
if (isDefaultStyle(current)) {

if (!current.getName().equals(style.getName())) {
throw new IllegalArgumentException("Cannot rename default styles");
}
if (null != style.getWorkspace()) {
throw new IllegalArgumentException("Cannot change the workspace of default styles");
}
}
}

return postValidate(style, isNew);
}

Expand All @@ -1405,11 +1420,21 @@ public void remove(StyleInfo style) {
throw new IllegalArgumentException( msg );
}
}

if (isDefaultStyle(style)) {
throw new IllegalArgumentException("Unable to delete a default style");
}

facade.remove(style);
removed(style);
}

private boolean isDefaultStyle(StyleInfo s) {
return s.getWorkspace() == null && (StyleInfo.DEFAULT_POINT.equals(s.getName())
|| StyleInfo.DEFAULT_LINE.equals(s.getName()) || StyleInfo.DEFAULT_POLYGON.equals(s.getName())
|| StyleInfo.DEFAULT_RASTER.equals(s.getName()) || StyleInfo.DEFAULT_GENERIC.equals(s.getName()));
}

public void save(StyleInfo style) {
validate(style,false);
facade.save(style);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ public class CatalogImplTest {
protected WMSLayerInfo wl;
protected LayerInfo l;
protected StyleInfo s;
protected StyleInfo defaultLineStyle;
protected LayerGroupInfo lg;

@Before
Expand Down Expand Up @@ -188,6 +189,10 @@ public void setUp() throws Exception {
s = factory.createStyle();
s.setName( "styleName" );
s.setFilename( "styleFilename" );

defaultLineStyle = factory.createStyle();
defaultLineStyle.setName( StyleInfo.DEFAULT_LINE );
defaultLineStyle.setFilename( StyleInfo.DEFAULT_LINE+".sld" );

l = factory.createLayer();
l.setResource( ft );
Expand Down Expand Up @@ -248,6 +253,10 @@ protected void addWMSLayer() {
protected void addStyle() {
catalog.add(s);
}

protected void addDefaultStyle() {
catalog.add(defaultLineStyle);
}

protected void addLayer() {
addFeatureType();
Expand Down Expand Up @@ -1466,7 +1475,7 @@ public void testModifyLayer() {
}

@Test
public void testModifyDefaultStyle() {
public void testModifyLayerDefaultStyle() {
// create new style
CatalogFactory factory = catalog.getFactory();
StyleInfo s2 = factory.createStyle();
Expand Down Expand Up @@ -1744,6 +1753,29 @@ public void testModifyStyle() {
s3 = catalog.getStyleByName( s2.getName() );
assertEquals( s2, s3 );
}

@Test
public void testModifyDefaultStyle() {
addWorkspace();
addDefaultStyle();
StyleInfo s = catalog.getStyleByName(StyleInfo.DEFAULT_LINE);

s.setName("foo");

try {
catalog.save(s);
fail("changing name of default style should fail");
}
catch( Exception e ) {}

s = catalog.getStyleByName(StyleInfo.DEFAULT_LINE);
s.setWorkspace(ws);
try {
catalog.save(s);
fail("changing workspace of default style should fail");
}
catch( Exception e ) {}
}

@Test
public void testRemoveStyle() {
Expand All @@ -1753,6 +1785,19 @@ public void testRemoveStyle() {
catalog.remove(s);
assertTrue( catalog.getStyles().isEmpty() );
}

@Test
public void testRemoveDefaultStyle() {
addWorkspace();
addDefaultStyle();
StyleInfo s = catalog.getStyleByName(StyleInfo.DEFAULT_LINE);

try {
catalog.remove(s);
fail("removing default style should fail");
}
catch( Exception e ) {}
}

@Test
public void testStyleEvents() {
Expand Down

0 comments on commit ae1bdf3

Please sign in to comment.