From 93ec8db2fbae6d595b17871719209b8b6bc9c2e6 Mon Sep 17 00:00:00 2001 From: eblondel Date: Thu, 4 Jul 2013 19:03:41 +0200 Subject: [PATCH 1/2] #84 - master - support encoding of multiple styles + tests --- .../rest/encoder/GSLayerEncoder.java | 39 +++++++++- .../rest/encoder/GSLayerEncoderTest.java | 74 +++++++++++++++++++ .../encoder/feature/GSFeatureEncoderTest.java | 6 ++ 3 files changed, 117 insertions(+), 2 deletions(-) create mode 100644 src/test/java/it/geosolutions/geoserver/rest/encoder/GSLayerEncoderTest.java diff --git a/src/main/java/it/geosolutions/geoserver/rest/encoder/GSLayerEncoder.java b/src/main/java/it/geosolutions/geoserver/rest/encoder/GSLayerEncoder.java index 9a474d4..5f3e0f3 100644 --- a/src/main/java/it/geosolutions/geoserver/rest/encoder/GSLayerEncoder.java +++ b/src/main/java/it/geosolutions/geoserver/rest/encoder/GSLayerEncoder.java @@ -26,7 +26,7 @@ package it.geosolutions.geoserver.rest.encoder; import org.jdom.Element; - +import org.jdom.filter.Filter; import it.geosolutions.geoserver.rest.encoder.utils.PropertyXMLEncoder; /** @@ -38,10 +38,14 @@ import it.geosolutions.geoserver.rest.encoder.utils.PropertyXMLEncoder; * */ public class GSLayerEncoder extends PropertyXMLEncoder { - + + public final static String STYLES = "styles"; + final private Element stylesEncoder = new Element(STYLES); + public GSLayerEncoder() { super("layer"); addEnabled(); + addContent(stylesEncoder); } /** @@ -130,4 +134,35 @@ public class GSLayerEncoder extends PropertyXMLEncoder { throw new IllegalArgumentException("Unable to set an empty or null parameter"); set("defaultStyle", defaultStyle); } + + /** + * Add a style + * @param style to add to the list of available styles + */ + public void addStyle(String style) { + final Element el = new Element("style"); + el.setText(style); + stylesEncoder.addContent(el); + } + + /** + * delete a style from the list of available styles + * + * @param style + * @return true if something is removed, false otherwise + */ + public boolean delStyle(final String style) { + final Element el = new Element("style"); + el.setText(style); + return (stylesEncoder.removeContent(new Filter() { + private static final long serialVersionUID = 1L; + + public boolean matches(Object obj) { + if (((Element) obj).getText().equals(style)) { + return true; + } + return false; + } + })).size() == 0 ? false : true; + } } diff --git a/src/test/java/it/geosolutions/geoserver/rest/encoder/GSLayerEncoderTest.java b/src/test/java/it/geosolutions/geoserver/rest/encoder/GSLayerEncoderTest.java new file mode 100644 index 0000000..60e976a --- /dev/null +++ b/src/test/java/it/geosolutions/geoserver/rest/encoder/GSLayerEncoderTest.java @@ -0,0 +1,74 @@ +/* + * Copyright (C) 2007 - 2011 GeoSolutions S.A.S. + * http://www.geo-solutions.it + * + * GPLv3 + Classpath exception + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package it.geosolutions.geoserver.rest.encoder; + + +import junit.framework.Assert; + +import org.jdom.Element; +import org.junit.Before; +import org.junit.Test; + +/** + * GSLayerEncoderTest + * + * @author Emmanuel Blondel - emmanuel.blondel1@gmail.com | + * emmanuel.blondel@fao.org + */ +public class GSLayerEncoderTest { + + GSLayerEncoder layerEncoder; + + @Before + public void setup(){ + layerEncoder = new GSLayerEncoder(); + layerEncoder.setEnabled(true); + layerEncoder.setQueryable(true); + layerEncoder.setDefaultStyle("point"); + layerEncoder.addStyle("additional_style1"); + layerEncoder.addStyle("additional_style2"); + } + + @Test + public void testProperties(){ + Assert.assertEquals(true, Boolean.parseBoolean(layerEncoder.getRoot().getChild("enabled").getValue())); + Assert.assertEquals(true, Boolean.parseBoolean(layerEncoder.getRoot().getChild("queryable").getValue())); + } + + @Test + public void testDefaultStyle(){ + Assert.assertEquals("point", layerEncoder.getRoot().getChild("defaultStyle").getValue()); + } + + @Test + public void testMultipleStyles(){ + Assert.assertEquals(2, layerEncoder.getRoot().getChild("styles").getChildren().size()); + Assert.assertEquals("additional_style1", ((Element) layerEncoder.getRoot().getChild("styles").getChildren().get(0)).getText()); + Assert.assertEquals("additional_style2", ((Element) layerEncoder.getRoot().getChild("styles").getChildren().get(1)).getText()); + } + + @Test + public void testRemoveStyle(){ + Assert.assertTrue(layerEncoder.delStyle("additional_style1")); + Assert.assertEquals(1,layerEncoder.getRoot().getChild("styles").getChildren().size()); + Assert.assertEquals("additional_style2", ((Element) layerEncoder.getRoot().getChild("styles").getChildren().get(0)).getText()); + } + +} diff --git a/src/test/java/it/geosolutions/geoserver/rest/encoder/feature/GSFeatureEncoderTest.java b/src/test/java/it/geosolutions/geoserver/rest/encoder/feature/GSFeatureEncoderTest.java index 125c888..f38f36d 100644 --- a/src/test/java/it/geosolutions/geoserver/rest/encoder/feature/GSFeatureEncoderTest.java +++ b/src/test/java/it/geosolutions/geoserver/rest/encoder/feature/GSFeatureEncoderTest.java @@ -48,6 +48,10 @@ import org.slf4j.LoggerFactory; import org.springframework.core.io.ClassPathResource; /** + * + * Note on adding multiple available styles to the GSLayerEncoder: - to run the + * testIntegration(), 2 clones of the "point" style, named "point2" and "point3" + * have to be created. * * @author ETj (etj at geo-solutions.it) * @author Carlo Cancellieri - carlo.cancellieri@geo-solutions.it @@ -88,6 +92,8 @@ public class GSFeatureEncoderTest extends GeoserverRESTPublisherTest { layerEncoder.setQueryable(true); layerEncoder.setDefaultStyle("point"); + layerEncoder.addStyle("point2"); + layerEncoder.addStyle("point3"); publisher.createWorkspace(DEFAULT_WS); From 09299bf3201fc57dafced22f26a5ebabc56a28d2 Mon Sep 17 00:00:00 2001 From: eblondel Date: Thu, 4 Jul 2013 22:08:38 +0200 Subject: [PATCH 2/2] #84 - master - reformat the code --- .../rest/encoder/GSLayerEncoder.java | 9 +-- .../rest/encoder/GSLayerEncoderTest.java | 71 +++++++++++-------- 2 files changed, 46 insertions(+), 34 deletions(-) diff --git a/src/main/java/it/geosolutions/geoserver/rest/encoder/GSLayerEncoder.java b/src/main/java/it/geosolutions/geoserver/rest/encoder/GSLayerEncoder.java index 5f3e0f3..03ee64a 100644 --- a/src/main/java/it/geosolutions/geoserver/rest/encoder/GSLayerEncoder.java +++ b/src/main/java/it/geosolutions/geoserver/rest/encoder/GSLayerEncoder.java @@ -135,11 +135,12 @@ public class GSLayerEncoder extends PropertyXMLEncoder { set("defaultStyle", defaultStyle); } - /** + /** * Add a style - * @param style to add to the list of available styles - */ - public void addStyle(String style) { + * + * @param style + */ + public void addStyle(String style) { final Element el = new Element("style"); el.setText(style); stylesEncoder.addContent(el); diff --git a/src/test/java/it/geosolutions/geoserver/rest/encoder/GSLayerEncoderTest.java b/src/test/java/it/geosolutions/geoserver/rest/encoder/GSLayerEncoderTest.java index 60e976a..8774bb1 100644 --- a/src/test/java/it/geosolutions/geoserver/rest/encoder/GSLayerEncoderTest.java +++ b/src/test/java/it/geosolutions/geoserver/rest/encoder/GSLayerEncoderTest.java @@ -19,7 +19,6 @@ */ package it.geosolutions.geoserver.rest.encoder; - import junit.framework.Assert; import org.jdom.Element; @@ -33,42 +32,54 @@ import org.junit.Test; * emmanuel.blondel@fao.org */ public class GSLayerEncoderTest { - + GSLayerEncoder layerEncoder; - + @Before - public void setup(){ + public void setup() { layerEncoder = new GSLayerEncoder(); layerEncoder.setEnabled(true); - layerEncoder.setQueryable(true); - layerEncoder.setDefaultStyle("point"); - layerEncoder.addStyle("additional_style1"); - layerEncoder.addStyle("additional_style2"); - } - - @Test - public void testProperties(){ - Assert.assertEquals(true, Boolean.parseBoolean(layerEncoder.getRoot().getChild("enabled").getValue())); - Assert.assertEquals(true, Boolean.parseBoolean(layerEncoder.getRoot().getChild("queryable").getValue())); - } - - @Test - public void testDefaultStyle(){ - Assert.assertEquals("point", layerEncoder.getRoot().getChild("defaultStyle").getValue()); - } - - @Test - public void testMultipleStyles(){ - Assert.assertEquals(2, layerEncoder.getRoot().getChild("styles").getChildren().size()); - Assert.assertEquals("additional_style1", ((Element) layerEncoder.getRoot().getChild("styles").getChildren().get(0)).getText()); - Assert.assertEquals("additional_style2", ((Element) layerEncoder.getRoot().getChild("styles").getChildren().get(1)).getText()); + layerEncoder.setQueryable(true); + layerEncoder.setDefaultStyle("point"); + layerEncoder.addStyle("additional_style1"); + layerEncoder.addStyle("additional_style2"); } @Test - public void testRemoveStyle(){ - Assert.assertTrue(layerEncoder.delStyle("additional_style1")); - Assert.assertEquals(1,layerEncoder.getRoot().getChild("styles").getChildren().size()); - Assert.assertEquals("additional_style2", ((Element) layerEncoder.getRoot().getChild("styles").getChildren().get(0)).getText()); + public void testProperties() { + Assert.assertEquals( + true, + Boolean.parseBoolean(layerEncoder.getRoot().getChild("enabled") + .getValue())); + Assert.assertEquals( + true, + Boolean.parseBoolean(layerEncoder.getRoot() + .getChild("queryable").getValue())); + } + + @Test + public void testDefaultStyle() { + Assert.assertEquals("point", + layerEncoder.getRoot().getChild("defaultStyle").getValue()); + } + + @Test + public void testMultipleStyles() { + Assert.assertEquals(2, layerEncoder.getRoot().getChild("styles") + .getChildren().size()); + Assert.assertEquals("additional_style1", ((Element) layerEncoder + .getRoot().getChild("styles").getChildren().get(0)).getText()); + Assert.assertEquals("additional_style2", ((Element) layerEncoder + .getRoot().getChild("styles").getChildren().get(1)).getText()); + } + + @Test + public void testRemoveStyle() { + Assert.assertTrue(layerEncoder.delStyle("additional_style1")); + Assert.assertEquals(1, layerEncoder.getRoot().getChild("styles") + .getChildren().size()); + Assert.assertEquals("additional_style2", ((Element) layerEncoder + .getRoot().getChild("styles").getChildren().get(0)).getText()); } }