From 5bca5f15a1f497873f973b8dc920b5c1e53c3bba Mon Sep 17 00:00:00 2001 From: wumpz Date: Wed, 16 Oct 2013 23:39:40 +0200 Subject: [PATCH 1/2] FeatureTypeList included --- .../geoserver/rest/GeoServerRESTReader.java | 14 ++++ .../rest/decoder/RESTFeatureTypeList.java | 64 +++++++++++++++++++ .../rest/decoder/RESTFeatureTypeListTest.java | 50 +++++++++++++++ .../testdata/featureTypeListExample.xml | 22 +++++++ 4 files changed, 150 insertions(+) create mode 100644 src/main/java/it/geosolutions/geoserver/rest/decoder/RESTFeatureTypeList.java create mode 100644 src/test/java/it/geosolutions/geoserver/rest/decoder/RESTFeatureTypeListTest.java create mode 100644 src/test/resources/testdata/featureTypeListExample.xml diff --git a/src/main/java/it/geosolutions/geoserver/rest/GeoServerRESTReader.java b/src/main/java/it/geosolutions/geoserver/rest/GeoServerRESTReader.java index e207f17..ee915c6 100644 --- a/src/main/java/it/geosolutions/geoserver/rest/GeoServerRESTReader.java +++ b/src/main/java/it/geosolutions/geoserver/rest/GeoServerRESTReader.java @@ -32,6 +32,7 @@ import it.geosolutions.geoserver.rest.decoder.RESTCoverageStoreList; import it.geosolutions.geoserver.rest.decoder.RESTDataStore; import it.geosolutions.geoserver.rest.decoder.RESTDataStoreList; import it.geosolutions.geoserver.rest.decoder.RESTFeatureType; +import it.geosolutions.geoserver.rest.decoder.RESTFeatureTypeList; import it.geosolutions.geoserver.rest.decoder.RESTLayer; import it.geosolutions.geoserver.rest.decoder.RESTLayerGroup; import it.geosolutions.geoserver.rest.decoder.RESTLayerGroupList; @@ -473,6 +474,19 @@ public class GeoServerRESTReader { } return RESTLayerList.build(load(url)); } + + /** + * Get summary info about all FeatureTypes of a workspace. + * + * @return summary info about Layers as a {@link RESTLayerList} + */ + public RESTFeatureTypeList getFeatureTypes(String workspace) { + String url = "/rest/workspaces/" + workspace + "/featuretypes.xml"; + if (LOGGER.isDebugEnabled()) { + LOGGER.debug("### Retrieving featuretypes from " + url); + } + return RESTFeatureTypeList.build(load(url)); + } /** * Get detailed info about a given Layer. diff --git a/src/main/java/it/geosolutions/geoserver/rest/decoder/RESTFeatureTypeList.java b/src/main/java/it/geosolutions/geoserver/rest/decoder/RESTFeatureTypeList.java new file mode 100644 index 0000000..bf35b7a --- /dev/null +++ b/src/main/java/it/geosolutions/geoserver/rest/decoder/RESTFeatureTypeList.java @@ -0,0 +1,64 @@ +/* + * GeoServer-Manager - Simple Manager Library for GeoServer + * + * Copyright (C) 2007,2011 GeoSolutions S.A.S. + * http://www.geo-solutions.it + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package it.geosolutions.geoserver.rest.decoder; + +import it.geosolutions.geoserver.rest.decoder.utils.JDOMBuilder; +import it.geosolutions.geoserver.rest.decoder.utils.NameLinkElem; + +import org.jdom.Element; + +/** + * Parses list of summary data about FeatureTypes. + * + * + * Layer summary info. + *
This is an XML fragment: + *
+ *{@code
+
+    states
+    
+
+ * }
+ * 
+ + * @author wumpz + */ +public class RESTFeatureTypeList extends RESTAbstractList { + + public static RESTFeatureTypeList build(String response) { + Element elem = JDOMBuilder.buildElement(response); + return elem == null? null : new RESTFeatureTypeList(elem); + } + + protected RESTFeatureTypeList(Element list) { + super(list); + } +} diff --git a/src/test/java/it/geosolutions/geoserver/rest/decoder/RESTFeatureTypeListTest.java b/src/test/java/it/geosolutions/geoserver/rest/decoder/RESTFeatureTypeListTest.java new file mode 100644 index 0000000..75123b5 --- /dev/null +++ b/src/test/java/it/geosolutions/geoserver/rest/decoder/RESTFeatureTypeListTest.java @@ -0,0 +1,50 @@ +package it.geosolutions.geoserver.rest.decoder; + +import java.io.IOException; +import java.io.InputStream; +import java.util.List; +import org.apache.commons.io.IOUtils; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import static org.junit.Assert.*; + +/** + * + * @author toben + */ +public class RESTFeatureTypeListTest { + + public RESTFeatureTypeListTest() { + } + + @BeforeClass + public static void setUpClass() { + } + + @AfterClass + public static void tearDownClass() { + } + + @Before + public void setUp() { + } + + @After + public void tearDown() { + } + + @Test + public void testBuild() throws IOException { + InputStream is = RESTFeatureTypeListTest.class.getResourceAsStream("/testdata/featureTypeListExample.xml"); + String response = IOUtils.toString(is); + is.close(); + RESTFeatureTypeList result = RESTFeatureTypeList.build(response); + List list = result.getNames(); + + assertArrayEquals(new String[]{"states", "tasmania_cities", "tasmania_roads", "tasmania_state_boundaries", "tasmania_water_bodies"} + , list.toArray()); + } +} \ No newline at end of file diff --git a/src/test/resources/testdata/featureTypeListExample.xml b/src/test/resources/testdata/featureTypeListExample.xml new file mode 100644 index 0000000..e343c46 --- /dev/null +++ b/src/test/resources/testdata/featureTypeListExample.xml @@ -0,0 +1,22 @@ + + + states + + + + tasmania_cities + + + + tasmania_roads + + + + tasmania_state_boundaries + + + + tasmania_water_bodies + + + \ No newline at end of file From 4a905938899bb7a2753c9b4ce987f92bd4e7f4c4 Mon Sep 17 00:00:00 2001 From: wumpz Date: Thu, 17 Oct 2013 00:02:58 +0200 Subject: [PATCH 2/2] FeatureTypeList included --- .../rest/decoder/RESTFeatureTypeList.java | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/main/java/it/geosolutions/geoserver/rest/decoder/RESTFeatureTypeList.java b/src/main/java/it/geosolutions/geoserver/rest/decoder/RESTFeatureTypeList.java index bf35b7a..9e8eae2 100644 --- a/src/main/java/it/geosolutions/geoserver/rest/decoder/RESTFeatureTypeList.java +++ b/src/main/java/it/geosolutions/geoserver/rest/decoder/RESTFeatureTypeList.java @@ -34,21 +34,19 @@ import org.jdom.Element; * Parses list of summary data about FeatureTypes. * * - * Layer summary info. + * FeatureType summary info. *
This is an XML fragment: *
  *{@code
-
+
     states
-    
-
+    
+
  * }
  * 
- + * * @author wumpz */ public class RESTFeatureTypeList extends RESTAbstractList {