#17 Create a method to update the default style of a given layer

This commit is contained in:
ETj 2011-10-14 16:15:27 +02:00
parent fa22471878
commit bbd13b3aa9
3 changed files with 119 additions and 2 deletions

View File

@ -730,7 +730,7 @@ public class GeoServerRESTPublisher {
* Allows to configure some layer attributes such as WmsPath and DefaultStyle
*
*/
protected boolean configureLayer(final GSLayerEncoder layer, final String layerName) {
public boolean configureLayer(final GSLayerEncoder layer, final String layerName) {
if (layer.isEmpty()) {
return true;

View File

@ -27,6 +27,8 @@ package it.geosolutions.geoserver.rest;
import it.geosolutions.geoserver.rest.decoder.RESTLayer;
import it.geosolutions.geoserver.rest.decoder.RESTCoverageStore;
import it.geosolutions.geoserver.rest.decoder.utils.JDOMBuilder;
import it.geosolutions.geoserver.rest.encoder.GSLayerEncoder;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
@ -34,6 +36,8 @@ import java.io.IOException;
import org.apache.commons.io.IOUtils;
import org.apache.log4j.Logger;
import org.jdom.Element;
import org.jdom.Namespace;
import org.springframework.core.io.ClassPathResource;
/**
@ -84,7 +88,21 @@ public class GeoserverRESTPublisherTest extends GeoserverRESTTest {
String sld = reader.getSLD(styleName);
assertNotNull(sld);
assertEquals(1475, sld.length());
Element styleEl = JDOMBuilder.buildElement(sld);
assertNotNull(styleEl);
Namespace SLDNS = Namespace.getNamespace("sld", "http://www.opengis.net/sld");
try{
assertEquals(styleName, styleEl.getChild("NamedLayer", SLDNS).getChild("Name",SLDNS).getText());
assertEquals("STYLE FOR TESTING PURPOSES", styleEl.getChild("NamedLayer", SLDNS).getChild("UserStyle", SLDNS).getChild("Title", SLDNS).getText());
} catch(NullPointerException npe) {
fail("Error in SLD");
}
// assertEquals(1475, sld.length());
assertEquals(1, reader.getStyles().size());
}
@ -320,6 +338,70 @@ public class GeoserverRESTPublisherTest extends GeoserverRESTTest {
assertFalse("removed not existing datastore", ok);
}
public void testUpdateDefaultStyle() throws FileNotFoundException, IOException {
if (!enabled()) {
return;
}
String ns = "it.geosolutions";
String storeName = "resttestshp";
String layerName = "cities";
final String styleName = "restteststyle";
{
File sldFile = new ClassPathResource("testdata/restteststyle.sld").getFile();
cleanupTestStyle(styleName);
boolean sldpublished = publisher.publishStyle(sldFile); // Will take the name from sld contents
assertTrue("style publish() failed", sldpublished);
assertTrue(reader.existsStyle(styleName));
}
final String styleName2 = "restteststyle2";
{
File sldFile = new ClassPathResource("testdata/restteststyle2.sld").getFile();
cleanupTestStyle(styleName2);
boolean sldpublished = publisher.publishStyle(sldFile); // Will take the name from sld contents
assertTrue("style publish() failed", sldpublished);
assertTrue(reader.existsStyle(styleName2));
}
File zipFile = new ClassPathResource("testdata/resttestshp.zip").getFile();
// known state?
cleanupTestFT(layerName, ns, storeName);
// test insert
boolean published = publisher.publishShp(ns, storeName, layerName, zipFile, "EPSG:4326", styleName);
assertTrue("publish() failed", published);
assertTrue(existsLayer(layerName));
{
RESTLayer layer = reader.getLayer(layerName);
LOGGER.info("Layer style is " + layer.getDefaultStyle());
assertEquals(styleName, layer.getDefaultStyle());
}
GSLayerEncoder le = new GSLayerEncoder();
le.addDefaultStyle(styleName2);
publisher.configureLayer(le, layerName);
{
RESTLayer layer = reader.getLayer(layerName);
LOGGER.info("Layer style is " + layer.getDefaultStyle());
assertEquals(styleName2, layer.getDefaultStyle());
}
// remove layer and datastore
boolean ok = publisher.unpublishFeatureType(ns, storeName, layerName);
assertFalse(existsLayer(layerName));
boolean dsRemoved = publisher.removeDatastore(ns, storeName);
assertTrue("removeDatastore() failed", dsRemoved);
}
// public void testDeleteUnexistingFT() throws FileNotFoundException, IOException {
// String wsName = "this_ws_does_not_exist";
// String storeName = "this_store_does_not_exist";

View File

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<sld:StyledLayerDescriptor xmlns="http://www.opengis.net/sld" xmlns:sld="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml" version="1.0.0">
<sld:NamedLayer>
<sld:Name>country</sld:Name>
<sld:UserStyle>
<sld:Name>restteststyle2</sld:Name>
<sld:Title>STYLE2 FOR TESTING PURPOSES</sld:Title>
<sld:Abstract>A sample style that just draws out a solid gray interior with a black 1px outline</sld:Abstract>
<sld:FeatureTypeStyle>
<sld:Name>name2</sld:Name>
<sld:FeatureTypeName>Feature</sld:FeatureTypeName>
<sld:SemanticTypeIdentifier>SemanticType[ANY]</sld:SemanticTypeIdentifier>
<sld:Rule>
<sld:Title>Polygon</sld:Title>
<sld:PolygonSymbolizer>
<sld:Fill>
<sld:CssParameter name="fill">
<ogc:Literal>#C8B679</ogc:Literal>
</sld:CssParameter>
<sld:CssParameter name="fill-opacity">
<ogc:Literal>1.0</ogc:Literal>
</sld:CssParameter>
</sld:Fill>
<sld:Stroke>
<sld:CssParameter name="stroke">
<ogc:Literal>#000000</ogc:Literal>
</sld:CssParameter>
</sld:Stroke>
</sld:PolygonSymbolizer>
</sld:Rule>
</sld:FeatureTypeStyle>
</sld:UserStyle>
</sld:NamedLayer>
</sld:StyledLayerDescriptor>