- align and update version

This commit is contained in:
afabiani 2016-09-07 10:49:29 +02:00
parent c0bd2cd69a
commit 255fd8eb4b
44 changed files with 2386 additions and 851 deletions

15
.travis.yml Normal file
View File

@ -0,0 +1,15 @@
sudo: false
cache:
directories:
- "$HOME/.m2"
language: java
jdk:
- oraclejdk7
- openjdk7
script:
- mvn -B -T2 -fae clean install
notifications:
email: false
on_failure: never
after_success:
- mvn clean cobertura:cobertura coveralls:report

View File

@ -1,4 +1,4 @@
Copyright (c) 20007-2011 GeoSolutions
Copyright (c) 20007-2016 GeoSolutions
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

16
README
View File

@ -1,16 +0,0 @@
REST client library to interact with GeoServer (http://www.geoserver.org)
The purpose of this project is to hold a REST client library to interact with GeoServer; a requirement for this library is to depend as less as possible on external libraries. This library aims at being lean and mean.
For general questions about this project feel free to use the mailing lists.
Mailing Lists
USERS
https://groups.google.com/forum/?fromgroups#!forum/geoserver-manager-users
DEVELOPERS
https://groups.google.com/forum/?fromgroups#!forum/geoserver-manager-devs
For more information see this page:
https://github.com/geosolutions-it/geoserver-manager/wiki

68
README.md Normal file
View File

@ -0,0 +1,68 @@
# geoserver-manager
## Status
* Master on travis [![Build Status](https://travis-ci.org/geosolutions-it/geoserver-manager.svg?branch=master)](https://travis-ci.org/geosolutions-it/geoserver-manager)
* Master on Linux + OracleJDK7 [![Build Status](http://build.geo-solutions.it/jenkins/view/GeoServer-manager/job/GeoServer-Manager-Master/badge/icon)](http://build.geo-solutions.it/jenkins/view/GeoServer-manager/job/GeoServer-Manager-Master/)
* Master on Windows + OracleJDK7 [![Build Status](http://winbuild.geo-solutions.it/jenkins/buildStatus/icon?job=GeoServer-Manager-Master)](http://winbuild.geo-solutions.it/jenkins/view/GeoServer-Manager/job/GeoServer-Manager-Master/)
* Stable on Linux + OracleJDK7 [![Build Status](http://build.geo-solutions.it/jenkins/view/GeoServer-manager/job/GeoServer-Manager-Stable/badge/icon)](http://build.geo-solutions.it/jenkins/view/GeoServer-manager/job/GeoServer-Manager-Stable/)
* Stable on Windows + OracleJDK7 [![Build Status](http://winbuild.geo-solutions.it/jenkins/buildStatus/icon?job=GeoServer-Manager-Stable)](http://winbuild.geo-solutions.it/jenkins/view/GeoServer-Manager/job/GeoServer-Manager-Stable/)
## Intro
Client library written in Java to interact with [GeoServer](http://www.geoserver.org) through its [ReST administration interface](http://docs.geoserver.org/stable/en/user/rest/api/index.html).
The purpose of this project is to hold a ReST client library to interact with GeoServer; a requirement for this library is to depend as less as possible on external libraries. This library aims at being lean and mean.
For general questions about this project feel free to use the mailing lists.
## Using the library
### Working with Maven
In order to include the lib and its dependencies in a Maven project, the repository to point at is this one:
```xml
<repository>
<id>GeoSolutions</id>
<url>http://maven.geo-solutions.it/</url>
</repository>
```
and the dependency tag for your pom is as follows:
```xml
<dependency>
<groupId>it.geosolutions</groupId>
<artifactId>geoserver-manager</artifactId>
<version>1.7.0</version>
</dependency>
```
### Direct Link to JAR
If you are simply looking for the JAR to download and use you can find it [here](http://maven.geo-solutions.it/it/geosolutions/geoserver-manager/1.7.0/geoserver-manager-1.7.0.jar).
### GeoServer Compatibility Matrix
**GeoServer-Manager/GeoServer** | **2.6.x** |**2.7.x** |**2.8.x** |**2.9.x**
-------------------------------- | ----------|----------|----------|---------
**1.6.0** | Y | Y | P | P
**1.7.0** | N | P | Y | Y
### Documentation
You can find some examples in the wiki.
## License
geoserver-manager is released under a permissinve [MIT](https://opensource.org/licenses/MIT) license. See [wikipedia](https://en.wikipedia.org/wiki/MIT_License) for more information.
## Mailing Lists
* [USERS](https://groups.google.com/forum/?fromgroups#!forum/geoserver-manager-users]https://groups.google.com/forum/?fromgroups#!forum/geoserver-manager-users)
* [DEVELOPERS](https://groups.google.com/forum/?fromgroups#!forum/geoserver-manager-devs)
For more information see [this](https://github.com/geosolutions-it/geoserver-manager/wiki) page.
## Version
Current stable version is [1.7.0](https://github.com/geosolutions-it/geoserver-manager/releases/tag/v1.7.0) ([Changelog](https://github.com/geosolutions-it/geoserver-manager/wiki/Changelog)).
## Credits
The work on this library has been initiated by GeoSolutions. Over the years it has been funded by various organizations like UN FAO, German Space Agency (DLR) and others.

543
pom.xml
View File

@ -1,105 +1,112 @@
<!-- * 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. -->
<!--
* GeoServer-Manager - Simple Manager Library for GeoServer
*
* Copyright (C) 2007 - 2016 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<groupId>it.geosolutions</groupId>
<artifactId>geoserver-manager</artifactId>
<version>1.7-SNAPSHOT</version>
<modelVersion>4.0.0</modelVersion>
<packaging>jar</packaging>
<groupId>it.geosolutions</groupId>
<artifactId>geoserver-manager</artifactId>
<version>1.8-SNAPSHOT</version>
<name>GeoServer 2 Manager - REST based</name>
<description>
GeoServer Manager is a library to interact with GeoServer 2.x.
<packaging>jar</packaging>
<name>GeoServer Manager - REST based</name>
<description>
GeoServer Manager is a library to interact with GeoServer
The scope of this library is to have a simple API, and use as few external
libs as possible.
</description>
<inceptionYear>2007</inceptionYear>
<inceptionYear>2007</inceptionYear>
<organization>
<name>GeoSolutions</name>
<url>http://www.geo-solutions.it</url>
</organization>
<url>https://github.com/geosolutions-it/geoserver-manager</url>
<developers>
<developer>
<id>etj</id>
<name>Emanuele Tajariol</name>
<email>etj AT geosolutions.it</email>
<organization>GeoSolutions</organization>
<organizationUrl>http://www.geo-solutions.it</organizationUrl>
<roles>
<role>architect</role>
<role>developer</role>
</roles>
<timezone>+1</timezone>
</developer>
<developer>
<id>ccancellieri</id>
<name>Carlo Cancellieri</name>
<email>carlo.cancellieri AT geosolutions.it</email>
<organization>GeoSolutions</organization>
<organizationUrl>http://www.geo-solutions.it</organizationUrl>
<roles>
<role>architect</role>
<role>developer</role>
</roles>
<timezone>+1</timezone>
</developer>
</developers>
<organization>
<name>GeoSolutions</name>
<url>http://www.geo-solutions.it</url>
</organization>
<licenses>
<license>
<name>MIT License</name>
<url>http://opensource.org/licenses/mit-license.php</url>
<distribution>repo</distribution>
</license>
</licenses>
<developers>
<developer>
<id>etj</id>
<name>Emanuele Tajariol</name>
<email>etj AT geosolutions.it</email>
<organization>GeoSolutions</organization>
<organizationUrl>http://www.geo-solutions.it</organizationUrl>
<roles>
<role>architect</role>
<role>developer</role>
</roles>
<timezone>+1</timezone>
</developer>
<developer>
<id>ccancellieri</id>
<name>Carlo Cancellieri</name>
<email>carlo.cancellieri AT geosolutions.it</email>
<organization>GeoSolutions</organization>
<organizationUrl>http://www.geo-solutions.it</organizationUrl>
<roles>
<role>architect</role>
<role>developer</role>
</roles>
<timezone>+1</timezone>
</developer>
</developers>
<url>http://code.google.com/p/geoserver-manager/</url>
<licenses>
<license>
<name>MIT License</name>
<url>http://opensource.org/licenses/mit-license.php</url>
<distribution>repo</distribution>
</license>
</licenses>
<issueManagement>
<system>googlecode</system>
<url>http://code.google.com/p/geoserver-manager/issues/list</url>
</issueManagement>
<issueManagement>
<system>GitHub</system>
<url>https://github.com/geosolutions-it/geoserver-manager/issues</url>
</issueManagement>
<mailingLists>
<mailingList>
<name>GeoServer Manager User List</name>
<post>geoserver-manager-users@googlegroups.com </post>
<archive>http://groups.google.com/group/geoserver-manager-users/topics</archive>
</mailingList>
</mailingLists>
<mailingLists>
<mailingList>
<name>GeoServer Manager User List</name>
<post>geoserver-manager-users@googlegroups.com </post>
<archive>http://groups.google.com/group/geoserver-manager-users/topics</archive>
</mailingList>
</mailingLists>
<scm>
<connection>scm:git:[fetch=]https://github.com/geosolutions-it/geoserver-manager.git[push=]git@github.com:geosolutions-it/geoserver-manager.git</connection>
<!--developerConnection>scm:git</developerConnection -->
<!--tag>master</tag -->
<url>https://github.com/geosolutions-it/geoserver-manager</url>
</scm>
<scm>
<connection>scm:git:[fetch=]https://github.com/geosolutions-it/geoserver-manager.git[push=]git@github.com:geosolutions-it/geoserver-manager.git</connection>
<url>https://github.com/geosolutions-it/geoserver-manager</url>
</scm>
<ciManagement>
<system>jenkins</system>
<url>http://ci.geo-solutions.it/</url>
</ciManagement>
<ciManagement>
<system>jenkins</system>
<url>http://build.geo-solutions.it/jenkins/view/GeoServer-manager/</url>
</ciManagement>
<repositories>
@ -150,211 +157,207 @@
</repositories>
<distributionManagement>
<downloadUrl>http://maven.geo-solutions.it</downloadUrl>
<repository>
<uniqueVersion>false</uniqueVersion>
<id>geosolutions</id>
<url>ftp://maven.geo-solutions.it/</url>
</repository>
<site>
<id>demo.geosolutions</id>
<url>scp://demo.geo-solutions.it/var/www/share/github/gsman</url>
</site>
</distributionManagement>
<distributionManagement>
<downloadUrl>http://maven.geo-solutions.it</downloadUrl>
<repository>
<uniqueVersion>false</uniqueVersion>
<id>geosolutions</id>
<url>ftp://maven.geo-solutions.it/</url>
</repository>
<site>
<id>demo.geosolutions</id>
<url>scp://demo.geo-solutions.it/var/www/share/github/gsman</url>
</site>
</distributionManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.7</version>
<configuration>
<detectLinks />
<!-- <links> <link>http://commons.apache.org/dbcp/apidocs/</link> <link>http://commons.apache.org/fileupload/apidocs/</link>
<link>http://download.oracle.com/javase/6/docs/api</link> </links> -->
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.7</version>
<configuration>
<detectLinks />
<!-- <links> <link>http://commons.apache.org/dbcp/apidocs/</link> <link>http://commons.apache.org/fileupload/apidocs/</link>
<link>http://download.oracle.com/javase/6/docs/api</link> </links> -->
</configuration>
</plugin>
<!-- ======================================================= -->
<!-- Source packaging. -->
<!-- ======================================================= -->
<plugin>
<inherited>true</inherited>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<configuration>
<attach>true</attach>
</configuration>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- versioning -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.2.2</version>
<configuration>
<tagNameFormat>v@{project.version}</tagNameFormat>
</configuration>
</plugin>
</plugins>
<!-- ======================================================= -->
<!-- Source packaging. -->
<!-- ======================================================= -->
<plugin>
<inherited>true</inherited>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<configuration>
<attach>true</attach>
</configuration>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- versioning -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.2.2</version>
<configuration>
<tagNameFormat>v@{project.version}</tagNameFormat>
</configuration>
</plugin>
</plugins>
<!-- ======================================================== -->
<!-- Extensions settings for Deployment -->
<!-- ======================================================== -->
<extensions>
<!--............................................. -->
<!-- geo-solutions (using wagon ftp) -->
<!--............................................. -->
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ftp</artifactId>
<version>1.0-beta-7</version>
</extension>
</extensions>
</build>
<!-- ======================================================== -->
<!-- Extensions settings for Deployment -->
<!-- ======================================================== -->
<extensions>
<!--............................................. -->
<!-- geo-solutions (using wagon ftp) -->
<!--............................................. -->
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ftp</artifactId>
<version>2.6</version>
</extension>
</extensions>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<links>
<link>http://commons.apache.org/lang/api</link>
<link>http://java.sun.com/j2se/1.5.0/docs/api</link>
<link>http://www.jdom.org/docs/apidocs</link>
</links>
</configuration>
</plugin>
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<links>
<link>http://commons.apache.org/lang/api</link>
<link>http://java.sun.com/j2se/1.5.0/docs/api</link>
<link>http://www.jdom.org/docs/apidocs</link>
</links>
</configuration>
</plugin>
<!-- <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>cobertura-maven-plugin</artifactId>
<version>2.2</version> </plugin> -->
</plugins>
</reporting>
</plugins>
</reporting>
<properties>
<slf4j.version>1.5.11</slf4j.version>
<gs.version>2.8-SNAPSHOT</gs.version>
</properties>
<properties>
<slf4j.version>1.5.11</slf4j.version>
</properties>
<dependencies>
<dependencies>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>jdom</groupId>
<artifactId>jdom</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
<dependency>
<groupId>jdom</groupId>
<artifactId>jdom</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
<dependency>
<groupId>org.apache.servicemix.bundles</groupId>
<artifactId>org.apache.servicemix.bundles.restlet</artifactId>
<version>1.1.10_3</version>
</dependency>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${slf4j.version}</version>
</dependency>
<!-- commons-logging can be rather simply and conveniently excluded as
a dependency by declaring it in the provided scope within the pom.xml file
of your project. The actual commons-logging classes would be provided by
jcl-over-slf4j.
This translates into the following pom file snippet: -->
<!-- <dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
</dependency>-->
<!-- commons-logging can be rather simply and conveniently excluded as
a dependency by declaring it in the provided scope within the pom.xml file
of your project. The actual commons-logging classes would be provided by
jcl-over-slf4j. This translates into the following pom file snippet: -->
<!-- <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId>
<version>1.1.1</version> <scope>provided</scope> </dependency> <dependency>
<groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.16</version>
</dependency> </dependency> -->
<!--================================================================= -->
<!-- TEST -->
<!--================================================================= -->
<!--================================================================= -->
<!-- TEST -->
<!--================================================================= -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>2.5.6.SEC02</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>2.5.6.SEC02</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.restlet</groupId>
<artifactId>org.restlet.ext.fileupload</artifactId>
<version>1.0.8</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>

View File

@ -1,7 +1,7 @@
/*
* GeoServer-Manager - Simple Manager Library for GeoServer
*
* Copyright (C) 2007,2013 GeoSolutions S.A.S.
* Copyright (C) 2007,2016 GeoSolutions S.A.S.
* http://www.geo-solutions.it
*
* Permission is hereby granted, free of charge, to any person obtaining a copy

View File

@ -1,7 +1,7 @@
/*
* GeoServer-Manager - Simple Manager Library for GeoServer
*
* Copyright (C) 2007,2015 GeoSolutions S.A.S.
* Copyright (C) 2007 - 2016 GeoSolutions S.A.S.
* http://www.geo-solutions.it
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
@ -39,10 +39,10 @@ import it.geosolutions.geoserver.rest.encoder.GSResourceEncoder.ProjectionPolicy
import it.geosolutions.geoserver.rest.encoder.GSWorkspaceEncoder;
import it.geosolutions.geoserver.rest.encoder.coverage.GSCoverageEncoder;
import it.geosolutions.geoserver.rest.encoder.feature.GSFeatureTypeEncoder;
import it.geosolutions.geoserver.rest.manager.GeoServerRESTImporterManager;
import it.geosolutions.geoserver.rest.manager.GeoServerRESTStructuredGridCoverageReaderManager;
import it.geosolutions.geoserver.rest.manager.GeoServerRESTStructuredGridCoverageReaderManager.ConfigureCoveragesOption;
import it.geosolutions.geoserver.rest.manager.GeoServerRESTStyleManager;
import it.geosolutions.geoserver.rest.manager.GeoServerRESTImporterManager;
import java.io.File;
import java.io.FileNotFoundException;
@ -54,13 +54,13 @@ import java.net.URL;
import java.net.URLEncoder;
import java.util.zip.ZipFile;
import net.sf.json.JSONObject;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.io.FilenameUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import net.sf.json.JSONObject;
/**
* Connect to a GeoServer instance to publish or modify its contents via REST API.
* <P>
@ -68,6 +68,7 @@ import org.slf4j.LoggerFactory;
*
* @author ETj (etj at geo-solutions.it)
* @author Carlo Cancellieri - carlo.cancellieri@geo-solutions.it
* @author Lennart Karsten - lennart.k@thinking-aloud.eu
*/
public class GeoServerRESTPublisher {
@ -93,7 +94,9 @@ public class GeoServerRESTPublisher {
private final GeoServerRESTStyleManager styleManager;
private final GeoServerRESTImporterManager importerManager;
/**
* Creates a <TT>GeoServerRESTPublisher</TT> to connect against a GeoServer instance with the given URL and user credentials.
*
@ -766,7 +769,9 @@ public class GeoServerRESTPublisher {
/** ImageMosaic */
IMAGEMOSAIC,
/** Geo referenced image (JPEG,PNG,TIF) */
WORLDIMAGE;
WORLDIMAGE,
/** Esri ArcGrid */
ARCGRID;
/**
* Returns a lowercase representation of the parameter value, suitable to construct the rest call.
@ -1157,13 +1162,24 @@ public class GeoServerRESTPublisher {
}
// config layer props (style, ...)
final GSLayerEncoder layerEncoder = new GSLayerEncoder();
if (defaultStyle != null && !defaultStyle.isEmpty())
layerEncoder.setDefaultStyle(defaultStyle);
final GSLayerEncoder layerEncoder = configureDefaultStyle(defaultStyle);
return configureLayer(workspace, datasetName, layerEncoder);
}
private GSLayerEncoder configureDefaultStyle(String defaultStyle) {
final GSLayerEncoder layerEncoder = new GSLayerEncoder();
if (defaultStyle != null && !defaultStyle.isEmpty()) {
if(defaultStyle.indexOf(":") != -1) {
String[] wsAndName = defaultStyle.split(":");
layerEncoder.setDefaultStyle(wsAndName[0], wsAndName[1]);
} else {
layerEncoder.setDefaultStyle(defaultStyle);
}
}
return layerEncoder;
}
/**
* Publish a shapefile.
*
@ -1513,6 +1529,202 @@ public class GeoServerRESTPublisher {
.toString()) } : (NameValuePair[]) null);
}
// ==========================================================================
// === ARCGRID
// ==========================================================================
/**
* Upload and publish a ArcGrid image.
*
* @param workspace Workspace to use
* @param storeName The store name to be used or created.
* @param arcgrid The ArcGrid file.
* @return true if success.
* @throws FileNotFoundException if ArcGrid file does not exist.
*/
public boolean publishArcGrid(String workspace, String storeName, File arcgrid)
throws FileNotFoundException {
return publishCoverage(workspace, storeName, CoverageStoreExtension.ARCGRID,
"image/arcgrid", arcgrid, ParameterConfigure.FIRST, (NameValuePair[]) null);
}
/**
* Upload and publish a ArcGrid image.
*
* @param workspace Workspace to use
* @param storeName Name of the coveragestore (if null the file name will be used)
* @param coverageName the name of the coverage (if null the file name will be used)
* @param arcgrid file to upload
* @return true if the operation completed successfully.
* @throws FileNotFoundException if file does not exists
* @throws IllegalArgumentException if workspace or arcgrid are null
*/
public boolean publishArcGrid(final String workspace, final String storeName,
final String coverageName, final File arcgrid) throws FileNotFoundException,
IllegalArgumentException {
if (workspace == null || arcgrid == null)
throw new IllegalArgumentException("Unable to proceed, some arguments are null");
return publishCoverage(
workspace,
(storeName != null) ? storeName : FilenameUtils.getBaseName(arcgrid
.getAbsolutePath()), CoverageStoreExtension.ARCGRID, "image/arcgrid",
arcgrid, ParameterConfigure.FIRST,
(coverageName != null) ? new NameValuePair[] { new NameValuePair("coverageName",
coverageName) } : (NameValuePair[]) null);
}
/**
* Upload and publish a ArcGrid image.
*
* @param workspace Workspace to use
* @param storeName Name of the coveragestore (if null the file name will be used)
* @param coverageName the name of the coverage (if null the file name will be used)
* @param arcgrid file to upload
* @param srs the native CRS
* @param policy projection policy. See {@link ProjectionPolicy}.
* @param defaultStyle the default style to apply.
* @param bbox An array of 4 doubles indicating envelope in EPSG:4326. Order is [Xmin, Ymin, Xmax, Ymax].
* @return true if the operation completed successfully.
* @throws FileNotFoundException if file does not exists
* @throws IllegalArgumentException if workspace or arcgrid are null
*
*/
public boolean publishArcGrid(String workspace, String storeName, String coverageName,
File arcgrid, String srs, ProjectionPolicy policy, String defaultStyle, double[] bbox)
throws FileNotFoundException, IllegalArgumentException {
if (workspace == null || storeName == null || arcgrid == null || coverageName == null
|| srs == null || policy == null || defaultStyle == null)
throw new IllegalArgumentException("Unable to run: null parameter");
if (!createCoverageStore(
workspace,
(storeName != null) ? storeName : FilenameUtils.getBaseName(arcgrid
.getAbsolutePath()), UploadMethod.FILE, CoverageStoreExtension.ARCGRID,
"image/arcgrid", arcgrid.toURI(), ParameterConfigure.NONE, (NameValuePair[]) null)) {
LOGGER.error("Unable to create coverage store for coverage: " + arcgrid);
return false;
}
// config coverage props (srs)
final GSCoverageEncoder coverageEncoder = new GSCoverageEncoder();
coverageEncoder.setName(coverageName);
coverageEncoder.setTitle(coverageName);
coverageEncoder.setSRS(srs);
coverageEncoder.setNativeFormat("ArcGrid");
coverageEncoder.addSupportedFormats("ARCGRID");
coverageEncoder.addKeyword("arcGrid");
coverageEncoder.addKeyword("WCS");
coverageEncoder.setNativeCRS(srs);
coverageEncoder.setProjectionPolicy(policy);
coverageEncoder.setRequestSRS(srs);
coverageEncoder.setResponseSRS(srs);
if (bbox != null && bbox.length == 4) {
coverageEncoder.setLatLonBoundingBox(bbox[0], bbox[1], bbox[2], bbox[3], DEFAULT_CRS);
}
if (!createCoverage(workspace, storeName, coverageEncoder)) {
LOGGER.error("Unable to create a coverage store for coverage: " + arcgrid);
return false;
}
// config layer props (style, ...)
final GSLayerEncoder layerEncoder = configureDefaultStyle(defaultStyle);
return configureLayer(workspace, coverageName, layerEncoder);
}
/**
* Publish a ArcGrid already in a filesystem readable by GeoServer.
*
* @param workspace an existing workspace
* @param storeName the coverageStore to be created
* @param arcgrid the arcGrid to be published
* @param srs the native CRS
* @param policy projection policy. See {@link ProjectionPolicy}.
* @param defaultStyle the default style to apply.
*
* @return true if the operation completed successfully.
* @throws FileNotFoundException if file does not exists
* @throws IllegalArgumentException if any of the mandatory parameters are null.
*/
public boolean publishExternalArcGrid(String workspace, String storeName, File arcgrid,
String coverageName, String srs, ProjectionPolicy policy, String defaultStyle)
throws FileNotFoundException, IllegalArgumentException {
if (workspace == null || storeName == null || arcgrid == null || coverageName == null
|| srs == null || policy == null || defaultStyle == null)
throw new IllegalArgumentException("Unable to run: null parameter");
// config coverage props (srs)
final GSCoverageEncoder coverageEncoder = new GSCoverageEncoder();
coverageEncoder.setName(coverageName);
coverageEncoder.setTitle(coverageName);
coverageEncoder.setSRS(srs);
coverageEncoder.setProjectionPolicy(policy);
// config layer props (style, ...)
final GSLayerEncoder layerEncoder = new GSLayerEncoder();
layerEncoder.setDefaultStyle(defaultStyle);
return publishExternalArcGrid(workspace, storeName, arcgrid, coverageEncoder, layerEncoder) != null ? true
: false;
}
/**
* Publish a ArcGrid already in a filesystem readable by GeoServer.
*
* @param workspace an existing workspace
* @param storeName the coverageStore to be created
* @param arcgrid the arcGrid to be published
* @param coverageEncoder coverage details. See {@link GSCoverageEncoder}.
* @param layerEncoder layer details, See {@link GSLayerEncoder}.
*
* @return true if the operation completed successfully.
* @throws FileNotFoundException if file does not exists
* @throws IllegalArgumentException if any of the mandatory parameters are null.
*/
public RESTCoverageStore publishExternalArcGrid(final String workspace, final String storeName,
final File arcgrid, final GSCoverageEncoder coverageEncoder,
final GSLayerEncoder layerEncoder) throws IllegalArgumentException,
FileNotFoundException {
if (workspace == null || arcgrid == null || storeName == null || layerEncoder == null
|| coverageEncoder == null)
throw new IllegalArgumentException("Unable to run: null parameter");
final String coverageName = coverageEncoder.getName();
if (coverageName.isEmpty()) {
throw new IllegalArgumentException("Unable to run: empty coverage store name");
}
// create store
final boolean store = publishExternalCoverage(workspace, storeName,
CoverageStoreExtension.ARCGRID, "text/plain", arcgrid, ParameterConfigure.NONE,
ParameterUpdate.OVERWRITE);
if (!store) {
return null;
}
// create Coverage Store
if (!createCoverage(workspace, storeName, coverageEncoder)) {
if (LOGGER.isErrorEnabled())
LOGGER.error("Unable to create a coverage for the store:" + coverageName);
return null;
}
// create Layer
if (configureLayer(workspace, coverageName, layerEncoder)) {
GeoServerRESTReader reader;
try {
reader = new GeoServerRESTReader(this.restURL, this.gsuser, this.gspass);
return reader.getCoverageStore(workspace, storeName);
} catch (MalformedURLException e) {
LOGGER.error(e.getMessage(), e);
}
}
return null;
}
// ==========================================================================
// === GEOTIFF
// ==========================================================================
@ -1608,7 +1820,14 @@ public class GeoServerRESTPublisher {
coverageEncoder.setName(coverageName);
coverageEncoder.setTitle(coverageName);
coverageEncoder.setSRS(srs);
coverageEncoder.setNativeFormat("GeoTIFF");
coverageEncoder.addSupportedFormats("GEOTIFF");
coverageEncoder.addKeyword("geoTiff");
coverageEncoder.addKeyword("WCS");
coverageEncoder.setNativeCRS(srs);
coverageEncoder.setProjectionPolicy(policy);
coverageEncoder.setRequestSRS(srs);
coverageEncoder.setResponseSRS(srs);
if (bbox != null && bbox.length == 4) {
coverageEncoder.setLatLonBoundingBox(bbox[0], bbox[1], bbox[2], bbox[3], DEFAULT_CRS);
}
@ -1619,8 +1838,7 @@ public class GeoServerRESTPublisher {
}
// config layer props (style, ...)
final GSLayerEncoder layerEncoder = new GSLayerEncoder();
layerEncoder.setDefaultStyle(defaultStyle);
final GSLayerEncoder layerEncoder = configureDefaultStyle(defaultStyle);
return configureLayer(workspace, coverageName, layerEncoder);
}

View File

@ -45,6 +45,10 @@ import it.geosolutions.geoserver.rest.decoder.RESTStructuredCoverageGranulesList
import it.geosolutions.geoserver.rest.decoder.RESTStructuredCoverageIndexSchema;
import it.geosolutions.geoserver.rest.decoder.RESTStyle;
import it.geosolutions.geoserver.rest.decoder.RESTStyleList;
import it.geosolutions.geoserver.rest.decoder.RESTWms;
import it.geosolutions.geoserver.rest.decoder.RESTWmsList;
import it.geosolutions.geoserver.rest.decoder.RESTWmsStore;
import it.geosolutions.geoserver.rest.decoder.RESTWmsStoreList;
import it.geosolutions.geoserver.rest.decoder.RESTWorkspaceList;
import it.geosolutions.geoserver.rest.decoder.about.GSVersionDecoder;
import it.geosolutions.geoserver.rest.manager.GeoServerRESTStructuredGridCoverageReaderManager;
@ -544,6 +548,153 @@ public class GeoServerRESTReader {
return RESTCoverage.build(response);
}
//==========================================================================
//=== WMSSTORES
//==========================================================================
/**
* Get summary info about all WmsStore in a WorkSpace.
*
* @param workspace The name of the workspace
*
* @return summary info about CoverageStores as a {@link RESTWmsStoreList}
*/
public RESTWmsStoreList getWmsStores(String workspace) {
String url = "/rest/workspaces/" + workspace + "/wmsstores.xml";
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("### Retrieving CS list from " + url);
}
return RESTWmsStoreList.build(load(url));
}
/**
* Get detailed info about a given WmsStore in a given Workspace.
*
* @param workspace The name of the workspace
* @param wsName The name of the WmsStore
* @return WmsStore details as a {@link RESTWmsStore}
*/
public RESTWmsStore getWmsStore(String workspace, String wsName) {
String url = "/rest/workspaces/" + workspace + "/wmsstores/" + wsName + ".xml";
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("### Retrieving CS from " + url);
}
return RESTWmsStore.build(load(url));
}
/**
* Get detailed info about a Wms's Datastore.
*
* @param wms the RESTWms
* @return wmsStore details as a {@link RESTWmsStore}
*/
public RESTWmsStore getWmsStore(RESTWms wms) {
String url = wms.getStoreUrl();
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("### Retrieving CS from fullurl " + url);
}
String response = loadFullURL(url);
return RESTWmsStore.build(response);
}
/**
* Checks if the selected Wms store is present. Parameter quietOnNotFound can be used for controlling the logging when 404 is returned.
*
* @param workspace workspace of the wmsstore
* @param wsName name of the wmsstore
* @param quietOnNotFound if true, no exception is logged
* @return boolean indicating if the wmsstore exists
*/
public boolean existsWmsstore(String workspace, String wsName, boolean quietOnNotFound){
String url = baseurl + "/rest/workspaces/" + workspace + "/wmsstores/" + wsName + ".xml";
String composed = Util.appendQuietOnNotFound(quietOnNotFound, url);
return HTTPUtils.exists(composed, username, password);
}
/**
* Checks if the selected wms store is present.
*
* @param workspace workspace of the wmsstore
* @param wsName name of the wmsstore
* @return boolean indicating if the wmsstore exists
*/
public boolean existsWmsstore(String workspace, String wsName){
return existsCoveragestore(workspace, wsName, Util.DEFAULT_QUIET_ON_NOT_FOUND);
}
//==========================================================================
//=== WMSS
//==========================================================================
/**
* Get list of wmss (usually only one).
*
* @param workspace The name of the workspace
* @param wsName The name of the WmsStore
* @return wms list as a {@link RESTWmsList}
*/
public RESTWmsList getWms(String workspace, String wsName) {
String url = "/rest/workspaces/" + workspace + "/wmsstores/" + wsName + "/wmslayers.xml";
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("### Retrieving Wmss from " + url);
}
return RESTWmsList.build(load(url));
}
/**
* Get detailed info about a given Wms.
*
* @param workspace The name of the workspace
* @param store The name of the WmsStore
* @param name The name of the Wms
* @return wms details as a {@link RESTwms}
*/
public RESTWms getWms(String workspace, String store, String name) {
String url = "/rest/workspaces/" + workspace + "/wmsstores/" + store + "/wmslayers/"+name+".xml";
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("### Retrieving Wmss from " + url);
}
return RESTWms.build(load(url));
}
/**
* Checks if the selected Wms is present. Parameter quietOnNotFound can be used for controlling the logging when 404 is returned.
*
* @param workspace workspace of the wmsstore
* @param wsName name of the wmsstore
* @param name name of the wms
* @param quietOnNotFound if true, no exception is logged
* @return boolean indicating if the coverage exists
*/
public boolean existsWms(String workspace, String store, String name, boolean quietOnNotFound){
String url = baseurl + "/rest/workspaces/" + workspace + "/wmsstores/" + store + "/wmslayers/"+name+".xml";
String composed = Util.appendQuietOnNotFound(quietOnNotFound, url);
return HTTPUtils.exists(composed, username, password);
}
/**
* Checks if the selected wms is present.
*
* @param workspace workspace of the wmsstore
* @param store name of the wmsstore
* @param name name of the wms
* @return boolean indicating if the coverage exists
*/
public boolean existsWms(String workspace, String store, String name){
return existsWms(workspace, store, name, Util.DEFAULT_QUIET_ON_NOT_FOUND);
}
/**
* Get detailed info about a Wms given the Layer where it's published with.
*
* @param layer A layer publishing the wmsStore
* @return Wms details as a {@link RESTWms}
*/
public RESTWms getWms(RESTLayer layer) {
String response = loadFullURL(layer.getResourceUrl());
return RESTWms.build(response);
}
//==========================================================================
//==========================================================================

View File

@ -1,7 +1,7 @@
/*
* GeoServer-Manager - Simple Manager Library for GeoServer
*
* Copyright (C) 2007,2015 GeoSolutions S.A.S.
* Copyright (C) 2007 - 2016 GeoSolutions S.A.S.
* http://www.geo-solutions.it
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
@ -50,8 +50,13 @@ public static final String QUIET_ON_NOT_FOUND_PARAM = "quietOnNotFound=";
List<RESTStyle> styles = new ArrayList<RESTStyle>();
RESTStyle style = reader.getStyle(stylename);
if(style != null)
styles.add(style);
// We don't want geoserver to be lenient here: take only the real global style if it exists
if(style != null) {
if(style.getWorkspace() == null || style.getWorkspace().isEmpty()) {
styles.add(style);
}
}
for (String workspace : reader.getWorkspaceNames()) {
style = reader.getStyle(workspace, stylename);

View File

@ -171,9 +171,9 @@ public class RESTCoverage extends RESTResource {
// return rootElem.getChildText("name");
// }
// public String getNativeName() {
// return rootElem.getChildText("nativeName");
// }
public String getNativeCoverageName() {
return rootElem.getChildText("nativeCoverageName");
}
public String getNativeFormat() {
return rootElem.getChildText("nativeFormat");
@ -282,6 +282,11 @@ public class RESTCoverage extends RESTResource {
builder.append(getNativeName());
builder.append(", ");
}
if (getNativeCoverageName() != null) {
builder.append("getNativeCoverageName()=");
builder.append(getNativeCoverageName());
builder.append(", ");
}
if (getAbstract() != null) {
builder.append("getAbstract()=");
builder.append(getAbstract());

View File

@ -0,0 +1,306 @@
/*
* 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 java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.jdom.Element;
/**
* Parse <TT>WMS</TT>s returned as XML REST objects.
*
* <P>This is the XML REST representation:
* <PRE>
*{@code
<wmsLayer>
<name>comunilazio</name>
<nativeName>lait:comunilazio</nativeName>
<namespace>
<name>arit</name>
<atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="alternate" href="http://172.27.30.25:8080/geoserver/rest/namespaces/arit.xml" type="application/xml"/>
</namespace>
<title>comunilazio</title>
<description/>
<keywords>
<string>features</string>
<string>comunilazio</string>
</keywords>
<nativeCRS>
GEOGCS["WGS 84", DATUM["World Geodetic System 1984", SPHEROID["WGS 84", 6378137.0, 298.257223563, AUTHORITY["EPSG","7030"]], AUTHORITY["EPSG","6326"]], PRIMEM["Greenwich", 0.0, AUTHORITY["EPSG","8901"]], UNIT["degree", 0.017453292519943295], AXIS["Geodetic longitude", EAST], AXIS["Geodetic latitude", NORTH], AUTHORITY["EPSG","4326"]]
</nativeCRS>
<srs>EPSG:4326</srs>
<nativeBoundingBox>
<minx>11.4482128</minx>
<maxx>14.0288013</maxx>
<miny>40.7848334</miny>
<maxy>42.8396541</maxy>
<crs>EPSG:4326</crs>
</nativeBoundingBox>
<latLonBoundingBox>
<minx>11.4482128</minx>
<maxx>14.0288013</maxx>
<miny>40.7848334</miny>
<maxy>42.8396541</maxy>
<crs>
GEOGCS["WGS84(DD)", DATUM["WGS84", SPHEROID["WGS84", 6378137.0, 298.257223563]], PRIMEM["Greenwich", 0.0], UNIT["degree", 0.017453292519943295], AXIS["Geodetic longitude", EAST], AXIS["Geodetic latitude", NORTH]]
</crs>
</latLonBoundingBox>
<projectionPolicy>FORCE_DECLARED</projectionPolicy>
<enabled>true</enabled>
<metadata>
<entry key="cachingEnabled">false</entry>
</metadata>
<store class="wmsStore">
<name>regione</name>
<atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="alternate" href="http://172.27.30.25:8080/geoserver/rest/workspaces/arit/wmsstores/regione.xml" type="application/xml"/>
</store>
</wmsLayer>
* }</PRE>
*
* @author cip
*/
public class RESTWms extends RESTResource {
public static RESTWms build(String response) {
Element elem = JDOMBuilder.buildElement(response);
return elem == null? null : new RESTWms(elem);
}
public RESTWms(Element resource) {
super(resource);
}
public RESTWms(RESTResource resource) {
super(resource.rootElem);
}
// public String getName() {
// return rootElem.getChildText("name");
// }
// public String getNativeName() {
// return rootElem.getChildText("nativeName");
// }
// public String getNameSpace() {
// return rootElem.getChild("namespace").getChildText("name");
// }
//
// public String getTitle() {
// return rootElem.getChildText("title");
// }
public String getNativeCRS() {
return rootElem.getChildText("nativeCRS");
}
public String getSRS() {
return rootElem.getChildText("srs");
}
public RESTMetadataList getMetadataList() {
return new RESTMetadataList(rootElem.getChild("metadata"));
}
public List<RESTDimensionInfo> getDimensionInfo() {
List<RESTDimensionInfo> listDim = new ArrayList<RESTDimensionInfo>();
for (RESTMetadataList.RESTMetadataElement el : getMetadataList()){
if(el.getKey().equals(RESTDimensionInfo.TIME) || el.getKey().equals(RESTDimensionInfo.ELEVATION)){
listDim.add(new RESTDimensionInfo(el.getMetadataElem()));
}
}
return listDim;
}
/**
* Retrieves the list of parameters for this wms.
*
* @return a {@link Map} where the key is the name for the parameter and the value is the value for the parameter.
*/
@SuppressWarnings("unchecked")
public Map<String, String> getParametersList() {
Map<String, String> paramsList = new HashMap<String, String>();
final Element paramsRoot = rootElem.getChild("parameters");
if (paramsRoot != null) {
final List<Element> params = paramsRoot.getChildren();
if (params != null) {
for (Element param : params) {
final List<Element> values = param.getChildren();
assert values.size()==2;
paramsList.put(values.get(0).getValue(), values.get(1).getValue()); // save key and value
}
}
}
return paramsList;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("RESTWms [");
if (getNativeCRS() != null) {
builder.append("getNativeCRS()=");
builder.append(getNativeCRS());
builder.append(", ");
}
if (getSRS() != null) {
builder.append("getSRS()=");
builder.append(getSRS());
builder.append(", ");
}
if (getMetadataList() != null) {
builder.append("getMetadataList()=");
builder.append(getMetadataList());
builder.append(", ");
}
if (getDimensionInfo() != null) {
builder.append("getDimensionInfo()=");
builder.append(getDimensionInfo());
builder.append(", ");
}
if (getParametersList() != null) {
builder.append("getParametersList()=");
builder.append(getParametersList());
builder.append(", ");
}
if (getName() != null) {
builder.append("getName()=");
builder.append(getName());
builder.append(", ");
}
if (getTitle() != null) {
builder.append("getTitle()=");
builder.append(getTitle());
builder.append(", ");
}
if (getNativeName() != null) {
builder.append("getNativeName()=");
builder.append(getNativeName());
builder.append(", ");
}
if (getAbstract() != null) {
builder.append("getAbstract()=");
builder.append(getAbstract());
builder.append(", ");
}
if (getNameSpace() != null) {
builder.append("getNameSpace()=");
builder.append(getNameSpace());
builder.append(", ");
}
if (getStoreName() != null) {
builder.append("getStoreName()=");
builder.append(getStoreName());
builder.append(", ");
}
if (getStoreType() != null) {
builder.append("getStoreType()=");
builder.append(getStoreType());
builder.append(", ");
}
if (getStoreUrl() != null) {
builder.append("getStoreUrl()=");
builder.append(getStoreUrl());
builder.append(", ");
}
if (getCRS() != null) {
builder.append("getCRS()=");
builder.append(getCRS());
builder.append(", ");
}
builder.append("getMinX()=");
builder.append(getMinX());
builder.append(", getMaxX()=");
builder.append(getMaxX());
builder.append(", getMinY()=");
builder.append(getMinY());
builder.append(", getMaxY()=");
builder.append(getMaxY());
builder.append(", ");
if (getAttributeList() != null) {
builder.append("getAttributeList()=");
builder.append(getAttributeList());
builder.append(", ");
}
if (getEncodedAttributeList() != null) {
builder.append("getEncodedAttributeList()=");
builder.append(getEncodedAttributeList());
builder.append(", ");
}
if (getEncodedMetadataLinkInfoList() != null) {
builder.append("getEncodedMetadataLinkInfoList()=");
builder.append(getEncodedMetadataLinkInfoList());
}
builder.append("]");
return builder.toString();
}
// public String getStoreName() {
// return rootElem.getChild("store").getChildText("name");
// }
//
// public String getStoreType() {
// return rootElem.getChild("store").getAttributeValue("class");
// }
// public String getStoreUrl() {
// Element store = rootElem.getChild("store");
// Element atom = store.getChild("link", Namespace.getNamespace("atom", "http://www.w3.org/2005/Atom"));
// return atom.getAttributeValue("href");
// }
// public String getBBCRS() {
// Element elBBox = rootElem.getChild("latLonBoundingBox");
// return elBBox.getChildText("crs");
// }
//
// protected double getLatLonEdge(String edge) {
// Element elBBox = rootElem.getChild("latLonBoundingBox");
// return Double.parseDouble(elBBox.getChildText(edge));
// }
//
// public double getMinX() {
// return getLatLonEdge("minx");
// }
// public double getMaxX() {
// return getLatLonEdge("maxx");
// }
// public double getMinY() {
// return getLatLonEdge("miny");
// }
// public double getMaxY() {
// return getLatLonEdge("maxy");
// }
}

View File

@ -0,0 +1,59 @@
/*
* 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 Wms.
*
* <P>This is the XML REST representation:
* <PRE>{@code <wmsLayers>
<wmsLayer>
<name>comunilazio</name>
<atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="alternate" href="http://172.27.30.25:8080/geoserver/rest/workspaces/arit/wmsstores/regione/wmslayers/comunilazio.xml" type="application/xml"/>
</wmsLayer>
</wmsLayers>
*
}</PRE>
*
* @author cip
*/
public class RESTWmsList extends RESTAbstractList<NameLinkElem> {
public static RESTWmsList build(String response) {
Element elem = JDOMBuilder.buildElement(response);
return elem == null? null : new RESTWmsList(elem);
}
protected RESTWmsList(Element list) {
super(list);
}
}

View File

@ -0,0 +1,145 @@
/*
* 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 org.jdom.Element;
/**
* Parse <TT>WmsStore</TT>s returned as XML REST objects.
* <P>
* This is the XML document returned by GeoServer when requesting a WmsStore:
* <PRE>
* {@code
<wmsStore>
<name>regione</name>
<type>WMS</type>
<enabled>true</enabled>
<workspace>
<name>arit</name>
<atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="alternate" href="http://172.27.30.25:8080/geoserver/rest/workspaces/arit.xml" type="application/xml"/>
</workspace>
<metadata>
<entry key="useConnectionPooling">true</entry>
</metadata>
<__default>false</__default>
<capabilitiesURL>http://www.regione.lazio.it/geoserver/wms</capabilitiesURL>
<user>admin</user>
<password>geoserver</password>
<maxConnections>6</maxConnections>
<readTimeout>60</readTimeout>
<connectTimeout>30</connectTimeout>
<wmsLayers>
<atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="alternate" href="http://172.27.30.25:8080/geoserver/rest/workspaces/arit/wmsstores/regione/wmslayers.xml" type="application/xml"/>
</wmsLayers>
</wmsStore>
* }
* </PRE>
*
* <I>Note: the whole XML fragment is stored in memory. At the moment, there are
* methods to retrieve only the more useful data.
*
* @author etj
*/
public class RESTWmsStore {
private final Element cs;
public RESTWmsStore(Element cs) {
this.cs = cs;
}
public static RESTWmsStore build(String response) {
if(response == null)
return null;
if(response.isEmpty())
return new RESTWmsStore(new Element("wmsStore")); // TODO check how to response
Element pb = JDOMBuilder.buildElement(response);
if(pb != null)
return new RESTWmsStore(pb);
else
return null;
}
public String getName() {
return cs.getChildText("name");
}
public String getType() {
return cs.getChildText("type");
}
public Boolean getEnabled() {
return Boolean.parseBoolean(cs.getChildText("enabled"));
}
public String getWorkspaceName() {
return cs.getChild("workspace").getChildText("name");
}
public Boolean getUseConnectionPooling(){
Element entry = cs.getChild("metadata").getChild("entry");
return entry.getAttributeValue("key").equals("useConnectionPooling") && Boolean.parseBoolean(entry.getValue());
}
public String getCapabilitiesURL() {
return cs.getChildText("capabilitiesURL");
}
public String getMaxConnections() {
return cs.getChildText("maxConnections");
}
public String getReadTimeout() {
return cs.getChildText("readTimeout");
}
public String getConnectTimeout() {
return cs.getChildText("connectTimeout");
}
public String getUser() {
return cs.getChildText("user");
}
public String getPassword() {
return cs.getChildText("password");
}
public String toString() {
StringBuilder sb = new StringBuilder(getClass().getSimpleName())
.append('[');
if(cs == null)
sb.append("null");
else
sb.append("name:").append(getName())
.append(" wsname:").append(getWorkspaceName());
return sb.toString();
}
}

View File

@ -0,0 +1,60 @@
/*
* 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 WmsStores.
*
* <P>This is the XML REST representation:
* <PRE>{@code
<wmsStores>
<wmsStore>
<name>regione</name>
<atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="alternate" href="http://172.27.30.25:8080/geoserver/rest/workspaces/arit/wmsstores/regione.xml" type="application/xml"/>
</wmsStore>
</wmsStores>
*
}</PRE>
*
* @author cip
*/
public class RESTWmsStoreList extends RESTAbstractList<NameLinkElem> {
public static RESTWmsStoreList build(String response) {
Element elem = JDOMBuilder.buildElement(response);
return elem == null? null : new RESTWmsStoreList(elem);
}
protected RESTWmsStoreList(Element list) {
super(list);
}
}

View File

@ -56,7 +56,7 @@ public abstract class GSAbstractStoreEncoder extends PropertyXMLEncoder {
}
public String getType() {
return ElementUtils.contains(getRoot(), "name").getTextTrim();
return ElementUtils.contains(getRoot(), "type").getTextTrim();
}
public void setName(String name) {

View File

@ -75,8 +75,10 @@ public class GSLayerEncoder extends PropertyXMLEncoder {
public final static String STYLES = "styles";
public final static String AUTHORITY_URLS="authorityURLs";
public final static String IDENTIFIERS="identifiers";
public final static String DEFAULT_STYLE = "defaultStyle";
final private Element stylesEncoder = new Element(STYLES);
final private Element defaultStyleEncoder = new Element(DEFAULT_STYLE);
final private Element authorityURLListEncoder = new Element(AUTHORITY_URLS);
final private Element identifierListEncoder = new Element(IDENTIFIERS);
@ -165,6 +167,20 @@ public class GSLayerEncoder extends PropertyXMLEncoder {
add("defaultStyle", defaultStyle);
}
/**
* @see {@link GSLayerEncoder#setDefaultStyle(String)}
* @param defaultStyle
*/
protected void addDefaultStyle(String workspace, String defaultStyle) {
addContent(defaultStyleEncoder);
Element el = new Element("name");
el.setText(defaultStyle);
defaultStyleEncoder.addContent(el);
el = new Element("workspace");
el.setText(workspace);
defaultStyleEncoder.addContent(el);
}
/**
* @param defaultStyle The style that will be applied if no style is specified.
* @throws IllegalArgumentException if defaultStyle is null or empty
@ -175,6 +191,15 @@ public class GSLayerEncoder extends PropertyXMLEncoder {
set("defaultStyle", defaultStyle);
}
/**
* @see {@link GSLayerEncoder#setDefaultStyle(String)}
* @param defaultStyle
*/
public void setDefaultStyle(String workspace, String defaultStyle) {
remove("defaultStyle");
addDefaultStyle(workspace, defaultStyle);
}
/**
* Add a style
*

View File

@ -1,7 +1,7 @@
/*
* GeoServer-Manager - Simple Manager Library for GeoServer
*
* Copyright (C) 2007,2011 GeoSolutions S.A.S.
* Copyright (C) 2007-2016 GeoSolutions S.A.S.
* http://www.geo-solutions.it
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
@ -26,7 +26,6 @@
package it.geosolutions.geoserver.rest.encoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
@ -37,6 +36,7 @@ import it.geosolutions.geoserver.rest.encoder.identifier.GSIdentifierInfoEncoder
import it.geosolutions.geoserver.rest.encoder.identifier.IdentifierInfo;
import it.geosolutions.geoserver.rest.encoder.utils.NestedElementEncoder;
import it.geosolutions.geoserver.rest.encoder.utils.XmlElement;
import java.util.LinkedHashMap;
/**
* Layer encoder for Geoserver = 2.1
@ -102,7 +102,7 @@ public class GSLayerEncoder21 extends GSLayerEncoder {
*/
public void addAuthorityURL(GSAuthorityURLInfoEncoder authorityURLInfo){
if(authorityURLList == null){
authorityURLList = new HashMap<String,String>();
authorityURLList = new LinkedHashMap<String,String>();
}
authorityURLList.put(authorityURLInfo.getHref(), authorityURLInfo.getName());
String jsonStr = "";
@ -152,7 +152,7 @@ public class GSLayerEncoder21 extends GSLayerEncoder {
*/
public void addIdentifier(GSIdentifierInfoEncoder identifierInfo){
if(identifierList == null){
identifierList = new HashMap<String,List<String>>();
identifierList = new LinkedHashMap<String,List<String>>();
}
String authority = identifierInfo.getAuthority();

View File

@ -41,12 +41,22 @@ import it.geosolutions.geoserver.rest.encoder.utils.ElementUtils;
*/
public class GSCoverageEncoder extends GSResourceEncoder {
public final static String NATIVECOVERAGENAME = "nativeCoverageName";
private final static String NATIVE_FORMAT="nativeFormat";
private final static String SUPPORTED_FORMATS="supportedFormats";
private final static String REQUEST_SRS="requestSRS";
private final static String RESPONSE_SRS="responseSRS";
private final Element supportedFormatsListEncoder = new Element(SUPPORTED_FORMATS);
public final static String DIMENSIONS = "dimensions";
final private Element dimensionsEncoder = new Element(DIMENSIONS);
public GSCoverageEncoder() {
super("coverage");
addContent(supportedFormatsListEncoder);
}
/**
@ -67,6 +77,40 @@ public class GSCoverageEncoder extends GSResourceEncoder {
super.setMetadata(key, dimensionInfo);
}
/**
* Add the 'nativeFormat' node with a text value
*/
public void setNativeFormat(String format) {
set(NATIVE_FORMAT, format);
}
/**
* Add the 'supportedFormat' node with a text value
*/
public void addSupportedFormats(String format) {
final Element el = new Element("string");
el.setText(format);
supportedFormatsListEncoder.addContent(el);
}
/**
* Add the 'requestSRS' node with a text value
*/
public void setRequestSRS(String srs) {
final Element el = new Element("string");
el.setText(srs);
set(REQUEST_SRS, el);
}
/**
* Add the 'responseSRS' node with a text value
*/
public void setResponseSRS(String srs) {
final Element el = new Element("string");
el.setText(srs);
set(RESPONSE_SRS, el);
}
/**
* Adds a CoverageDimensionInfo to the GeoServer Resource
*
@ -106,4 +150,36 @@ public class GSCoverageEncoder extends GSResourceEncoder {
return (dimensionsEncoder.removeContent(GSCoverageDimensionEncoder
.getFilterByContent(coverageDimensionName))).size() == 0 ? false : true;
}
/**
* Add the 'nativeCoverageName' node with a text value from 'name'
*
*
*/
public void addNativeCoverageName(final String nativeCoverageName) {
add(NATIVECOVERAGENAME, nativeCoverageName);
}
/**
* Set the 'nativeCoverageName' node with a text value from 'name'
*
*
*/
public void setNativeCoverageName(final String nativeCoverageName) {
set(NATIVECOVERAGENAME, nativeCoverageName);
}
/**
* Get the nativeCoverageName
*
* @return
*/
public String getNativeCoverageName() {
final Element nativeCoverageNameNode = ElementUtils.contains(getRoot(), NATIVECOVERAGENAME, 1);
if (nativeCoverageNameNode != null)
return nativeCoverageNameNode.getText();
else
return null;
}
}

View File

@ -1,18 +1,26 @@
/*
* GeoTools - The Open Source Java GIS Toolkit
* http://geotools.org
* GeoServer-Manager - Simple Manager Library for GeoServer
*
* (C) 2015, Open Source Geospatial Foundation (OSGeo)
* Copyright (C) 2007,2011 GeoSolutions S.A.S.
* http://www.geo-solutions.it
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License.
* 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:
*
* This library 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
* Lesser General Public License for more details.
* 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.manager;
@ -30,7 +38,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author Alessio Fabiani
* @author Alessio Fabiani, GeoSolutions S.A.S.
*
*/
public class GeoServerRESTImporterManager extends GeoServerRESTAbstractManager {

View File

@ -528,7 +528,7 @@ public class GeoServerRESTStyleManager extends GeoServerRESTAbstractManager {
*/
public boolean publishStyleInWorkspace(final String workspace, String sldBody) {
try {
return publishStyleInWorkspace(workspace, sldBody);
return publishStyleInWorkspace(workspace, sldBody, null);
} catch (IllegalArgumentException e) {
if (LOGGER.isErrorEnabled()) {
LOGGER.error(e.getLocalizedMessage(), e);

View File

@ -1,6 +1,5 @@
package it.geosolutions.geoserver.decoder;
import it.geosolutions.geoserver.rest.decoder.RESTLayer;
import it.geosolutions.geoserver.rest.decoder.RESTLayer21;
import it.geosolutions.geoserver.rest.encoder.authorityurl.GSAuthorityURLInfoEncoder;
import it.geosolutions.geoserver.rest.encoder.identifier.GSIdentifierInfoEncoder;
@ -14,6 +13,8 @@ import junit.framework.Assert;
import org.apache.commons.io.FileUtils;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.ClassPathResource;
/**
@ -25,6 +26,8 @@ import org.springframework.core.io.ClassPathResource;
*/
public class LayerDecoder21Test{
private final static Logger LOGGER = LoggerFactory.getLogger(LayerDecoder21Test.class);
RESTLayer21 layer;
@Before
@ -43,7 +46,7 @@ public class LayerDecoder21Test{
public void testAuthorityURLs() {
List<GSAuthorityURLInfoEncoder> authorityURLs = layer
.getEncodedAuthorityURLInfoList();
System.out.println(authorityURLs.size());
LOGGER.debug("Number of authority URLs: " + authorityURLs.size());
Assert.assertEquals("authority1", authorityURLs.get(0).getName());
Assert.assertEquals("http://www.authority1.org", authorityURLs.get(0)
.getHref());

View File

@ -23,7 +23,6 @@ package it.geosolutions.geoserver.decoder;
import it.geosolutions.geoserver.rest.decoder.RESTCoverage;
import it.geosolutions.geoserver.rest.decoder.RESTDimensionInfo;
import it.geosolutions.geoserver.rest.encoder.metadatalink.GSMetadataLinkInfoEncoder;
import java.io.File;
import java.io.IOException;

View File

@ -21,11 +21,8 @@
*/
package it.geosolutions.geoserver.decoder;
import it.geosolutions.geoserver.rest.GeoServerRESTPublisher;
import it.geosolutions.geoserver.rest.GeoServerRESTReader;
import it.geosolutions.geoserver.rest.GeoserverRESTTest;
import it.geosolutions.geoserver.rest.decoder.about.GSVersionDecoder;
import it.geosolutions.geoserver.rest.decoder.about.GSVersionDecoder.VERSION;
import junit.framework.Assert;
import org.jdom.Element;

View File

@ -0,0 +1,85 @@
package it.geosolutions.geoserver.decoder;
import it.geosolutions.geoserver.rest.decoder.RESTWmsStore;
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.springframework.core.io.ClassPathResource;
/**
* WmsStoreDecoderTest
*
* @author cip (cippinofg at gmail.com)
*
*/
public class WmsStoreDecoderTest {
RESTWmsStore wmsstore;
@Before
public void setup() throws IOException {
File wmsstoreFile = new ClassPathResource("testdata/wmsstoreExample.xml").getFile();
String wmsstoreContent = FileUtils.readFileToString(wmsstoreFile);
wmsstore = RESTWmsStore.build(wmsstoreContent);
}
@Test
public void testName() {
Assert.assertEquals(wmsstore.getName(), "wmsstore001");
}
@Test
public void testType() {
Assert.assertEquals(wmsstore.getType(), "WMS");
}
@Test
public void testEnabled() {
Assert.assertEquals(wmsstore.getEnabled(), true);
}
@Test
public void testWorkspace() {
Assert.assertEquals(wmsstore.getWorkspaceName(), "ws001");
}
@Test
public void testUseConnectionPooling() {
Assert.assertEquals(wmsstore.getUseConnectionPooling(),true);
}
@Test
public void testCapabilitiesURL() {
Assert.assertEquals(wmsstore.getCapabilitiesURL(), "http://myhost/geoserver/wms");
}
@Test
public void testUser() {
Assert.assertEquals(wmsstore.getUser(), "admin");
}
@Test
public void testPassword() {
Assert.assertEquals(wmsstore.getPassword(), "geoserver");
}
@Test
public void testMaxConnections() {
Assert.assertEquals(wmsstore.getMaxConnections(), "6");
}
@Test
public void testReadTimeout() {
Assert.assertEquals(wmsstore.getReadTimeout(), "60");
}
@Test
public void testConnectTimeout() {
Assert.assertEquals(wmsstore.getConnectTimeout(), "30");
}
}

View File

@ -64,7 +64,7 @@ public class ConfigTest extends GeoserverRESTTest {
LOGGER.info("Existing styles: " + reader.getStyles().getNames());
String basename = FilenameUtils.getBaseName(sldFile.toString());
LOGGER.info("Publishing style " + sldFile + " as " + basename);
assertTrue("Cound not publish " + sldFile, publisher.publishStyle(sldFile, basename));
assertTrue("Could not publish " + sldFile, publisher.publishStyle(sldFile, basename));
}
}

View File

@ -25,12 +25,10 @@
package it.geosolutions.geoserver.rest;
import static org.junit.Assert.*;
import static org.junit.Assert.assertTrue;
import java.util.List;
import it.geosolutions.geoserver.rest.decoder.RESTLayerGroup;
import it.geosolutions.geoserver.rest.decoder.utils.NameLinkElem;
import org.junit.Test;
import org.slf4j.Logger;

View File

@ -35,6 +35,9 @@ import it.geosolutions.geoserver.rest.decoder.utils.NameLinkElem;
import java.util.List;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import static org.junit.Assert.*;
@ -44,6 +47,8 @@ import static org.junit.Assert.*;
*/
public class GeoserverRESTReaderTest extends GeoserverRESTTest {
private final static Logger LOGGER = LoggerFactory.getLogger(GeoserverRESTReaderTest.class);
/**
* Test of getLayers method, of class GeoServerRESTReader.
*/
@ -56,16 +61,16 @@ public class GeoserverRESTReaderTest extends GeoserverRESTTest {
// assertEquals(/*CHANGEME*/19, result.getChildren("layer").size()); // value in default gs installation
// System.out.println("Layers:" + result.getChildren("layer").size());
System.out.println("Layers:" + result.size());
System.out.print("Layers:" );
LOGGER.debug("Layers: " + result.size());
// LOGGER.debug("Layers:" );
for (NameLinkElem shlayer : result) {
assertNotNull(shlayer.getName());
System.out.print(shlayer.getName() + " ");
LOGGER.debug(shlayer.getName() + " ");
}
// for (Element layer : (List<Element>)result.getChildren("layer")) {
// System.out.print(layer.getChildText("name") + " ");
// }
System.out.println();
LOGGER.debug("");
}
/**
@ -79,25 +84,25 @@ public class GeoserverRESTReaderTest extends GeoserverRESTTest {
assertNotNull(wslist);
// assertEquals(7, wslist.size()); // value in default gs installation
System.out.println("Workspaces: " + wslist.size());
LOGGER.debug("Workspaces: " + wslist.size());
int dsnum = 0;
for (RESTWorkspaceList.RESTShortWorkspace ws : wslist) {
System.out.println("Getting DSlist for WS " + ws.getName() + "..." );
LOGGER.debug("Getting DSlist for WS " + ws.getName() + "..." );
RESTDataStoreList result = reader.getDatastores(ws.getName());
assertNotNull(result);
dsnum += result.size();
for (NameLinkElem ds : result) {
assertNotNull(ds.getName());
System.out.print(ds.getName() + " " );
LOGGER.debug(ds.getName() + " " );
RESTDataStore datastore = reader.getDatastore(ws.getName(), ds.getName());
assertNotNull(datastore);
assertEquals(ds.getName(), datastore.getName());
assertEquals(ws.getName(), datastore.getWorkspaceName());
}
System.out.println();
LOGGER.debug("");
}
System.out.println();
System.out.println("Datastores:" + dsnum); // value in default gs installation
LOGGER.debug("");
LOGGER.debug("Datastores:" + dsnum); // value in default gs installation
// assertEquals(4, dsnum); // value in default gs installation
}
@ -116,7 +121,6 @@ public class GeoserverRESTReaderTest extends GeoserverRESTTest {
// assertEquals(7, wsnames.size()); // value in default gs installation
// System.out.println("Workspaces: " + wslist.size());
int dsnum = 0;
int wscnt = 0;
for (RESTWorkspaceList.RESTShortWorkspace ws : wslist) {
String wsname = wsnames.get(wscnt++);
@ -158,14 +162,14 @@ public class GeoserverRESTReaderTest extends GeoserverRESTTest {
assertNotNull(names);
assertEquals(names.size(), result.size()); // value in default gs installation
System.out.println("Namespaces:" + result.size());
System.out.print("Namespaces:" );
LOGGER.debug("Namespaces:" + result.size());
LOGGER.debug("Namespaces:" );
int namesIdx = 0;
for (RESTNamespaceList.RESTShortNamespace ns : result) {
assertEquals("namespace mismatch", names.get(namesIdx++), ns.getName());
System.out.print(ns.getName() + " " );
LOGGER.debug(ns.getName() + " " );
}
System.out.println();
LOGGER.debug("");
}
/**
@ -179,12 +183,12 @@ public class GeoserverRESTReaderTest extends GeoserverRESTTest {
assertNotNull(names);
// assertEquals(7, names.size()); // value in default gs installation
System.out.println("Namespaces:" + names.size());
System.out.print("Namespaces:");
LOGGER.debug("Namespaces:" + names.size());
LOGGER.debug("Namespaces:");
for (String name : names) {
System.out.print(name + " ");
LOGGER.debug(name + " ");
}
System.out.println();
LOGGER.debug("");
}
/**
@ -198,12 +202,12 @@ public class GeoserverRESTReaderTest extends GeoserverRESTTest {
assertNotNull(wslist);
// assertEquals(7, wslist.size()); // value in default gs installation
System.out.println("Workspaces:" + wslist.size());
System.out.print("Workspaces:");
LOGGER.debug("Workspaces:" + wslist.size());
LOGGER.debug("Workspaces:");
for (RESTWorkspaceList.RESTShortWorkspace ws : wslist) {
System.out.print(ws.getName() + " ");
LOGGER.debug(ws.getName() + " ");
}
System.out.println();
LOGGER.debug("");
assertEquals(wslist.size(), reader.getWorkspaceNames().size());
}
@ -218,12 +222,12 @@ public class GeoserverRESTReaderTest extends GeoserverRESTTest {
assertNotNull(names);
// assertEquals(7, names.size()); // value in default gs installation
System.out.println("Workspaces:" + names.size());
System.out.print("Workspaces:");
LOGGER.debug("Workspaces:" + names.size());
LOGGER.debug("Workspaces:");
for (String name : names) {
System.out.print(name + " ");
LOGGER.debug(name + " ");
}
System.out.println();
LOGGER.debug("");
}
}

View File

@ -1,7 +1,7 @@
/*
* GeoServer-Manager - Simple Manager Library for GeoServer
*
* Copyright (C) 2007,2011 GeoSolutions S.A.S.
* Copyright (C) 2007 - 2016 GeoSolutions S.A.S.
* http://www.geo-solutions.it
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
@ -41,7 +41,6 @@ import java.util.List;
import static org.junit.Assert.*;
import org.jdom.output.EscapeStrategy;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Rule;
@ -98,7 +97,7 @@ public abstract class GeoserverRESTTest {
RESTURL = getenv("gsmgr_resturl", "http://localhost:8080/geoserver");
RESTUSER = getenv("gsmgr_restuser", "admin");
RESTPW = getenv("gsmgr_restpw", "geoserver");
GS_VERSION = getenv("gsmgr_version", "28");
GS_VERSION = getenv("gsmgr_version", "2.8");
// These tests will destroy data, so let's make sure we do want to run them
enabled = getenv("gsmgr_resttest", "false").equalsIgnoreCase("true");
@ -136,17 +135,17 @@ public abstract class GeoserverRESTTest {
+ RESTURL);
}
} else if (existgs == false){
System.out.println("Failing tests : geoserver not found");
LOGGER.debug("Failing tests : geoserver not found");
fail("GeoServer not found");
}
GSVersionDecoder v=reader.getGeoserverVersion();
if (v.compareTo(VERSION.getVersion(GS_VERSION))!=0){
System.out.println("Failing tests : geoserver version does not match.\nAccepted versions: "+VERSION.print());
LOGGER.debug("Failing tests : geoserver version does not match.\nAccepted versions: "+VERSION.print());
fail("GeoServer version ("+v.getVersion()+") does not match the desired one ("+GS_VERSION+")");
}
} else {
System.out.println("Skipping tests ");
LOGGER.debug("Skipping tests ");
LOGGER.warn("Tests are disabled. Please read the documentation to enable them.");
}
}

View File

@ -1,7 +1,7 @@
/*
* GeoServer-Manager - Simple Manager Library for GeoServer
*
* Copyright (C) 2007,2013 GeoSolutions S.A.S.
* Copyright (C) 2007 - 2016 GeoSolutions S.A.S.
* http://www.geo-solutions.it
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
@ -22,20 +22,17 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
package it.geosolutions.geoserver.rest;
import static it.geosolutions.geoserver.rest.GeoserverRESTTest.publisher;
import static it.geosolutions.geoserver.rest.GeoserverRESTTest.reader;
import it.geosolutions.geoserver.rest.decoder.RESTStyle;
import java.io.File;
import java.io.IOException;
import java.util.List;
import org.junit.Test;
import static org.junit.Assert.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import static org.junit.Assert.*;
import org.springframework.core.io.ClassPathResource;
/**
@ -44,52 +41,66 @@ import org.springframework.core.io.ClassPathResource;
*/
public class UtilTest extends GeoserverRESTTest {
private final static Logger LOGGER = LoggerFactory.getLogger(UtilTest.class);
private final static Logger LOGGER = LoggerFactory.getLogger(UtilTest.class);
@Test
public void testSearchStyle() throws IOException {
if (!enabled())
return;
deleteAll();
@Test
public void testSearchStyle() throws IOException {
if (!enabled()) {
return;
}
deleteAll();
final String WORKSPACE = "testWorkspace";
final String STYLENAME = "restteststyle";
final String STYLENAME = "restteststyle";
File sldFile = new ClassPathResource("testdata/restteststyle.sld").getFile();
File sldFile = new ClassPathResource("testdata/restteststyle.sld").getFile();
publisher.createWorkspace(WORKSPACE);
assertEquals(0, reader.getStyles().size());
assertEquals(0, reader.getStyles(WORKSPACE).size());
assertEquals(0, reader.getStyles().size());
assertEquals(0, reader.getStyles(WORKSPACE).size());
assertEquals(0, Util.searchStyles(reader, STYLENAME).size());
// insert style in workspace
assertTrue(publisher.publishStyleInWorkspace(WORKSPACE, sldFile, STYLENAME));
assertTrue(reader.existsStyle(WORKSPACE, STYLENAME));
assertFalse(reader.existsStyle(STYLENAME));
assertEquals(0, reader.getStyles().size());
assertEquals(1, reader.getStyles(WORKSPACE).size());
// insert style in workspace
assertTrue(publisher.publishStyleInWorkspace(WORKSPACE, sldFile, STYLENAME));
assertTrue(reader.existsStyle(WORKSPACE, STYLENAME));
// GeoServer returns workspace specific names if hte name is not found as global
assertTrue(reader.existsStyle(STYLENAME));
assertEquals(0, reader.getStyles().size());
assertEquals(1, reader.getStyles(WORKSPACE).size());
assertEquals(1, Util.searchStyles(reader, STYLENAME).size());
// insert global style
assertTrue(publisher.publishStyle(sldFile, STYLENAME));
assertTrue(publisher.publishStyle(sldFile, STYLENAME));
assertTrue(reader.existsStyle(STYLENAME));
assertTrue(reader.existsStyle(WORKSPACE, STYLENAME));
assertEquals(2, Util.searchStyles(reader, STYLENAME).size());
for(RESTStyle style : Util.searchStyles(reader, STYLENAME))
{
LOGGER.debug(style.getWorkspace() + " :: " + style.getName());
}
assertEquals(1, reader.getStyles().size());
assertEquals(1, reader.getStyles(WORKSPACE).size());
// there's a bug in geoserver here: the global style will include workspace info
// https://osgeo-org.atlassian.net/browse/GEOS-7498
// Commenting out all the concerned test code
List<RESTStyle> styles = Util.searchStyles(reader, STYLENAME);
assertEquals(STYLENAME, styles.get(0).getName());
assertEquals(null, styles.get(0).getWorkspace()); // first one is the global one, if any
assertEquals(STYLENAME, styles.get(1).getName());
assertEquals(WORKSPACE, styles.get(1).getWorkspace());
}
// assertEquals(2, Util.searchStyles(reader, STYLENAME).size());
//
// assertEquals(1, reader.getStyles().size());
// assertEquals(1, reader.getStyles(WORKSPACE).size());
//
// List<RESTStyle> styles = Util.searchStyles(reader, STYLENAME);
//
// assertEquals(STYLENAME, styles.get(0).getName());
//
//
// // assertEquals(null, styles.get(0).getWorkspace()); // first one is the global one, if any
//
// assertEquals(STYLENAME, styles.get(1).getName());
// assertEquals(WORKSPACE, styles.get(1).getWorkspace());
}
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2007 - 2011 GeoSolutions S.A.S.
* Copyright (C) 2007-2016 GeoSolutions S.A.S.
* http://www.geo-solutions.it
*
* GPLv3 + Classpath exception
@ -19,7 +19,6 @@
*/
package it.geosolutions.geoserver.rest.encoder;
import java.util.ArrayList;
import java.util.List;
import it.geosolutions.geoserver.rest.encoder.authorityurl.AuthorityURLInfo;
@ -46,16 +45,21 @@ public class GSLayerEncoder21Test {
public void setup() {
layerEncoder = new GSLayerEncoder21();
layerEncoder.setAdvertised(true);
layerEncoder.addAuthorityURL(new GSAuthorityURLInfoEncoder(
layerEncoder.addAuthorityURL(
new GSAuthorityURLInfoEncoder(
"authority1", "http://www.authority1.org"));
layerEncoder.addIdentifier(new GSIdentifierInfoEncoder("authority1",
"identifier1"));
layerEncoder.addAuthorityURL(new GSAuthorityURLInfoEncoder(
layerEncoder.addIdentifier(
new GSIdentifierInfoEncoder(
"authority1", "identifier1"));
layerEncoder.addAuthorityURL(
new GSAuthorityURLInfoEncoder(
"authority2", "http://www.authority2.org"));
layerEncoder.addIdentifier(new GSIdentifierInfoEncoder("authority2",
"identifier2"));
layerEncoder.addIdentifier(new GSIdentifierInfoEncoder("authority2",
"additionalId"));
layerEncoder.addIdentifier(
new GSIdentifierInfoEncoder(
"authority2", "identifier2"));
layerEncoder.addIdentifier(
new GSIdentifierInfoEncoder(
"authority2", "additionalId"));
}
@ -97,34 +101,33 @@ public class GSLayerEncoder21Test {
}else if(key.matches("identifiers")){
String jsonStr = el.getValue();
jsonStr = jsonStr.substring(2);
jsonStr = jsonStr.substring(0,
jsonStr.length() - 3);
jsonStr = jsonStr.substring(0, jsonStr.length() - 3);
String[] items = jsonStr.split("\\}(,)\\{");
String[] props1 = items[0].split(",");
String[] kvp1_1 = props1[0].split("\":");
String[] kvp1_2 = props1[1].split("\":");
Assert.assertEquals(IdentifierInfo.authority.name(), kvp1_1[0].replace("\"", ""));
Assert.assertEquals("authority2", kvp1_1[1].replace("\"", ""));
Assert.assertEquals(IdentifierInfo.identifier.name(), kvp1_2[0].replace("\"", ""));
Assert.assertEquals("identifier2", kvp1_2[1].replace("\"", ""));
Assert.assertEquals("idx0", IdentifierInfo.authority.name(), kvp1_1[0].replace("\"", ""));
Assert.assertEquals("idx0", "authority1", kvp1_1[1].replace("\"", ""));
Assert.assertEquals("idx0", IdentifierInfo.identifier.name(), kvp1_2[0].replace("\"", ""));
Assert.assertEquals("idx0", "identifier1", kvp1_2[1].replace("\"", ""));
String[] props2 = items[1].split(",");
String[] kvp2_1 = props2[0].split("\":");
String[] kvp2_2 = props2[1].split("\":");
Assert.assertEquals(IdentifierInfo.authority.name(), kvp2_1[0].replace("\"", ""));
Assert.assertEquals("authority2", kvp2_1[1].replace("\"", ""));
Assert.assertEquals(IdentifierInfo.identifier.name(), kvp2_2[0].replace("\"", ""));
Assert.assertEquals("additionalId", kvp2_2[1].replace("\"", ""));
Assert.assertEquals("idx1", IdentifierInfo.authority.name(), kvp2_1[0].replace("\"", ""));
Assert.assertEquals("idx1", "authority2", kvp2_1[1].replace("\"", ""));
Assert.assertEquals("idx1", IdentifierInfo.identifier.name(), kvp2_2[0].replace("\"", ""));
Assert.assertEquals("idx1", "identifier2", kvp2_2[1].replace("\"", ""));
String[] props3 = items[2].split(",");
String[] kvp3_1 = props3[0].split("\":");
String[] kvp3_2 = props3[1].split("\":");
Assert.assertEquals(IdentifierInfo.authority.name(), kvp3_1[0].replace("\"", ""));
Assert.assertEquals("authority1", kvp3_1[1].replace("\"", ""));
Assert.assertEquals(IdentifierInfo.identifier.name(), kvp3_2[0].replace("\"", ""));
Assert.assertEquals("identifier1", kvp3_2[1].replace("\"", ""));
Assert.assertEquals("idx2", IdentifierInfo.authority.name(), kvp3_1[0].replace("\"", ""));
Assert.assertEquals("idx2", "authority2", kvp3_1[1].replace("\"", ""));
Assert.assertEquals("idx2", IdentifierInfo.identifier.name(), kvp3_2[0].replace("\"", ""));
Assert.assertEquals("idx2", "additionalId", kvp3_2[1].replace("\"", ""));
}
}

View File

@ -111,4 +111,12 @@ public class GSLayerEncoderTest {
Assert.assertEquals("authority1", el.getChild("authority").getValue());
Assert.assertEquals("identifier1", el.getChild("identifier").getValue());
}
@Test
public void testDefaultStyleWithWorkspace(){
layerEncoder.setDefaultStyle("ws", "style");
Element el = (Element) layerEncoder.getRoot().getChild("defaultStyle");
Assert.assertEquals("style", el.getChild("name").getValue());
Assert.assertEquals("ws", el.getChild("workspace").getValue());
}
}

View File

@ -129,9 +129,14 @@ public class GSCoverageEncoderTest extends TestCase {
"dobson units³", "REAL_32BITS");
encoder.addCoverageDimensionInfo(gsCoverageDimensionEncoder);
if (LOGGER.isInfoEnabled())
encoder.setNativeCoverageName("Sample native name");
if (LOGGER.isInfoEnabled())
LOGGER.info(encoder.toString());
Element nativeCoverageName = ElementUtils.contains(encoder.getRoot(), GSCoverageEncoder.NATIVECOVERAGENAME);
assertNotNull(nativeCoverageName);
assertEquals("Sample native name", nativeCoverageName.getText());
final Element el2=ElementUtils.contains(encoder.getRoot(),GSDimensionInfoEncoder.PRESENTATION);
Assert.assertNotNull(el2);
LOGGER.info("contains_key:"+el2.toString());

View File

@ -19,12 +19,6 @@
*/
package it.geosolutions.geoserver.rest.encoder.dimensions;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import it.geosolutions.geoserver.rest.encoder.feature.GSFeatureTypeEncoder;
import java.io.IOException;
import junit.framework.Assert;
import org.junit.Test;

View File

@ -23,14 +23,11 @@ import it.geosolutions.geoserver.rest.GeoServerRESTPublisher;
import it.geosolutions.geoserver.rest.GeoserverRESTTest;
import it.geosolutions.geoserver.rest.decoder.RESTFeatureType;
import it.geosolutions.geoserver.rest.decoder.RESTLayer;
import it.geosolutions.geoserver.rest.decoder.RESTResource;
import it.geosolutions.geoserver.rest.decoder.about.GSVersionDecoder;
import it.geosolutions.geoserver.rest.decoder.about.GSVersionDecoder.VERSION;
import it.geosolutions.geoserver.rest.encoder.GSLayerEncoder;
import it.geosolutions.geoserver.rest.encoder.GSLayerEncoder21;
import it.geosolutions.geoserver.rest.encoder.GSResourceEncoder;
import it.geosolutions.geoserver.rest.encoder.authorityurl.GSAuthorityURLInfoEncoder;
import it.geosolutions.geoserver.rest.encoder.dimensions.GSCoverageDimensionEncoder;
import it.geosolutions.geoserver.rest.encoder.identifier.GSIdentifierInfoEncoder;
import it.geosolutions.geoserver.rest.encoder.metadata.GSDimensionInfoEncoder;
import it.geosolutions.geoserver.rest.encoder.metadata.GSDimensionInfoEncoder.Presentation;

View File

@ -1,7 +1,7 @@
/*
* GeoServer-Manager - Simple Manager Library for GeoServer
*
* Copyright (C) 2007,2012 GeoSolutions S.A.S.
* Copyright (C) 2007 - 2016 GeoSolutions S.A.S.
* http://www.geo-solutions.it
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
@ -37,6 +37,7 @@ import java.util.Map;
import org.junit.Test;
import static org.junit.Assert.*;
import org.junit.Ignore;
/**
* Test datastore handling (create, read and update):
@ -64,9 +65,11 @@ import static org.junit.Assert.*;
* <li>Test all new values.
* </ol>
*
* @deprecated ignored since dir of shapes cannot be uploaded
* @author Oscar Fonts
*/
public class GeoserverRESTDatastoreManagerTest extends StoreIntegrationTest {
@Ignore
public class DirShapeStoreManagerTest extends StoreIntegrationTest {
private static final String WS_NAME = DEFAULT_WS;
@ -78,7 +81,7 @@ public class GeoserverRESTDatastoreManagerTest extends StoreIntegrationTest {
private static URL LOCATION_2;
public GeoserverRESTDatastoreManagerTest() throws Exception {
public DirShapeStoreManagerTest() throws Exception {
super(false);
LOCATION_1 = new URL("file:data/shapefiles/");
LOCATION_2 = new URL("file:data/2");
@ -104,7 +107,7 @@ public class GeoserverRESTDatastoreManagerTest extends StoreIntegrationTest {
// Create a directory of spatial files with default parameters
GSDirectoryOfShapefilesDatastoreEncoder create = new GSDirectoryOfShapefilesDatastoreEncoder(
DS_NAME, LOCATION_1);
assertTrue(manager.getStoreManager().create(WS_NAME, create));
assertTrue("Could not create create store", manager.getStoreManager().create(WS_NAME, create));
// Read the store from server; check all parameter values
RESTDataStore read = reader.getDatastore(WS_NAME, DS_NAME);
@ -131,14 +134,14 @@ public class GeoserverRESTDatastoreManagerTest extends StoreIntegrationTest {
update.setCacheAndReuseMemoryMaps(false);
// update the store
assertTrue(manager.getStoreManager().update(WS_NAME, update));
assertTrue("Could not update store " + WS_NAME, manager.getStoreManager().update(WS_NAME, update));
// Read again, check that all parameters have changed
read = reader.getDatastore(WS_NAME, DS_NAME);
assertEquals(read.getWorkspaceName(), WS_NAME);
assertEquals(read.isEnabled(), false);
assertEquals("Bad workspace name", read.getWorkspaceName(), WS_NAME);
assertEquals("Datastore should not be enabled", read.isEnabled(), false);
connParams = read.getConnectionParameters();
assertEquals(connParams.get("url"), LOCATION_2.toString());
assertEquals("Bad URL", connParams.get("url"), LOCATION_2.toString());
assertEquals(connParams.get("charset"), "UTF-8");
assertEquals(connParams.get("create spatial index"), "false");
assertEquals(connParams.get("memory mapped buffer"), "true");

View File

@ -0,0 +1,180 @@
/*
* GeoServer-Manager - Simple Manager Library for GeoServer
*
* Copyright (C) 2016 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.publisher;
import it.geosolutions.geoserver.rest.GeoServerRESTPublisher.StoreType;
import it.geosolutions.geoserver.rest.GeoserverRESTTest;
import it.geosolutions.geoserver.rest.decoder.RESTCoverageStore;
import it.geosolutions.geoserver.rest.decoder.RESTLayer;
import it.geosolutions.geoserver.rest.encoder.GSResourceEncoder.ProjectionPolicy;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.ClassPathResource;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import static org.junit.Assert.*;
/**
* Testcase for publishing layers on geoserver.
* We need a running GeoServer to properly run the tests.
* If such geoserver instance cannot be contacted, tests will be skipped.
*
* @author Lennart Karsten - lennart.k@thinking-aloud.eu
* inspired by: Carlo Cancellieri - carlo.cancellieri@geo-solutions.it
*/
public class GeoserverRESTArcGridTest extends GeoserverRESTTest {
private final static Logger LOGGER = LoggerFactory.getLogger(GeoserverRESTArcGridTest.class);
private String storeName = "testRESTStoreArcGrid";
private String layerName = "resttestdem";
@Test
public void testExternalArcGrid() throws FileNotFoundException, IOException {
if (!enabled()) return;
deleteAll();
File arcgrid = new ClassPathResource("testdata/resttestdem.asc").getFile();
assertTrue(reader.getWorkspaces().isEmpty());
assertTrue(publisher.createWorkspace(DEFAULT_WS));
// known state?
assertFalse("Cleanup failed", existsLayer(layerName));
// Test exists
assertFalse(reader.existsLayer(DEFAULT_WS, layerName));
// test insert
boolean pc = publisher.publishExternalArcGrid(DEFAULT_WS, storeName, arcgrid, layerName,"EPSG:4326",ProjectionPolicy.FORCE_DECLARED,"raster");
assertTrue("publish() failed", pc);
assertTrue(existsLayer(layerName));
assertFalse(reader.existsLayer(DEFAULT_WS, layerName));
LOGGER.info("Published "+pc);
RESTCoverageStore reloadedCS = reader.getCoverageStore(DEFAULT_WS, storeName);
assertEquals(storeName, reloadedCS.getName());
assertEquals(DEFAULT_WS, reloadedCS.getWorkspaceName());
//test delete
assertTrue("Unpublish() failed", publisher.unpublishCoverage(DEFAULT_WS, storeName, layerName));
assertTrue("Unpublish() failed", publisher.removeCoverageStore(DEFAULT_WS, storeName));
assertFalse("Bad unpublish()", publisher.unpublishCoverage(DEFAULT_WS, storeName, layerName));
assertFalse(existsLayer(layerName));
}
@Test
public void testArcGrid() throws FileNotFoundException, IOException {
if (!enabled()) return;
deleteAll();
File arcgrid = new ClassPathResource("testdata/resttestdem.asc").getFile();
assertTrue(reader.getWorkspaces().isEmpty());
assertTrue(publisher.createWorkspace(DEFAULT_WS));
// known state?
assertFalse("Cleanup failed", existsLayer(layerName));
// test insert
boolean pub = publisher.publishArcGrid(DEFAULT_WS, storeName, arcgrid);
assertNotNull("publish() failed", pub);
// Test exists
assertTrue(reader.existsCoveragestore(DEFAULT_WS, storeName));
assertTrue(reader.existsCoverage(DEFAULT_WS, storeName, storeName));
pub = publisher.publishArcGrid(DEFAULT_WS, storeName+"another", "layername", arcgrid);
assertTrue("publish() failed", pub);
double[] bbox = {-103.85, 44.38, -103.62, 44.50};
pub = publisher.publishArcGrid(DEFAULT_WS, storeName+"another_complex", storeName+"another_complex", arcgrid, "EPSG:4326", ProjectionPolicy.REPROJECT_TO_DECLARED, "raster", bbox);
assertTrue("publish() failed", pub);
//delete
assertTrue("Unpublish() failed", publisher.removeCoverageStore(DEFAULT_WS, storeName,true));
// Test not exists
assertFalse(reader.existsCoveragestore(DEFAULT_WS, storeName));
}
@Test
public void testArcGridWithStyleInWorkspace() throws IOException {
if (!enabled()) return;
deleteAll();
File arcgrid = new ClassPathResource("testdata/resttestdem.asc").getFile();
assertTrue(reader.getWorkspaces().isEmpty());
assertTrue(publisher.createWorkspace(DEFAULT_WS));
File sldFile = new ClassPathResource("testdata/raster.sld").getFile();
// insert style
assertTrue(publisher.publishStyleInWorkspace(DEFAULT_WS, sldFile, "mystyle"));
assertTrue(reader.existsStyle(DEFAULT_WS, "mystyle"));
// known state?
assertFalse("Cleanup failed", existsLayer(layerName));
// test insert
boolean pub = publisher.publishArcGrid(DEFAULT_WS, storeName, storeName,
arcgrid, "EPSG:4326", ProjectionPolicy.FORCE_DECLARED, DEFAULT_WS + ":" + "mystyle", null);
assertNotNull("publish() failed", pub);
// Test exists
assertTrue(reader.existsCoveragestore(DEFAULT_WS, storeName));
assertTrue(reader.existsCoverage(DEFAULT_WS, storeName, storeName));
RESTLayer layer = reader.getLayer(DEFAULT_WS, storeName);
assertEquals(DEFAULT_WS + ":mystyle", layer.getDefaultStyle());
assertEquals(DEFAULT_WS, layer.getDefaultStyleWorkspace());
}
@Test
public void testReloadCoverageStore() throws FileNotFoundException, IOException {
if (!enabled()) return;
deleteAll();
File arcgrid = new ClassPathResource("testdata/resttestdem.asc").getFile();
assertTrue(publisher.createWorkspace(DEFAULT_WS));
// test insert
boolean pub = publisher.publishArcGrid(DEFAULT_WS, storeName, arcgrid);
assertNotNull("publish() failed", pub);
// test reload
assertTrue(publisher.reloadStore(DEFAULT_WS, storeName, StoreType.COVERAGESTORES));
}
}

View File

@ -25,9 +25,14 @@
package it.geosolutions.geoserver.rest.publisher;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import it.geosolutions.geoserver.rest.GeoServerRESTPublisher.StoreType;
import it.geosolutions.geoserver.rest.GeoserverRESTTest;
import it.geosolutions.geoserver.rest.decoder.RESTCoverageStore;
import it.geosolutions.geoserver.rest.decoder.RESTLayer;
import it.geosolutions.geoserver.rest.encoder.GSResourceEncoder.ProjectionPolicy;
import java.io.File;
@ -35,7 +40,6 @@ import java.io.FileNotFoundException;
import java.io.IOException;
import org.junit.Test;
import static org.junit.Assert.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.ClassPathResource;
@ -125,6 +129,40 @@ public class GeoserverRESTGeoTiffTest extends GeoserverRESTTest {
assertFalse(reader.existsCoveragestore(DEFAULT_WS, storeName));
}
@Test
public void testGeoTiffWithStyleInWorkspace() throws IOException
{
if (!enabled()) return;
deleteAll();
File geotiff = new ClassPathResource("testdata/resttestdem.tif").getFile();
assertTrue(reader.getWorkspaces().isEmpty());
assertTrue(publisher.createWorkspace(DEFAULT_WS));
File sldFile = new ClassPathResource("testdata/raster.sld").getFile();
// insert style
assertTrue(publisher.publishStyleInWorkspace(DEFAULT_WS, sldFile, "mystyle"));
assertTrue(reader.existsStyle(DEFAULT_WS, "mystyle"));
// known state?
assertFalse("Cleanup failed", existsLayer(layerName));
// test insert
boolean pub = publisher.publishGeoTIFF(DEFAULT_WS, storeName, storeName,
geotiff, "EPSG:4326", ProjectionPolicy.FORCE_DECLARED, DEFAULT_WS + ":" + "mystyle", null);
assertNotNull("publish() failed", pub);
// Test exists
assertTrue("New coverage not found", reader.existsCoveragestore(DEFAULT_WS, storeName));
assertTrue("New Store not found", reader.existsCoverage(DEFAULT_WS, storeName, storeName));
RESTLayer layer = reader.getLayer(DEFAULT_WS, storeName);
assertEquals("Bad default style", DEFAULT_WS + ":mystyle", layer.getDefaultStyle());
assertEquals("Bad workspace for style", DEFAULT_WS, layer.getDefaultStyleWorkspace());
}
@Test
public void testReloadCoverageStore() throws FileNotFoundException, IOException {
if (!enabled()) return;

View File

@ -1,19 +1,28 @@
/*
* GeoTools - The Open Source Java GIS Toolkit
* http://geotools.org
* GeoServer-Manager - Simple Manager Library for GeoServer
*
* (C) 2015, Open Source Geospatial Foundation (OSGeo)
* Copyright (C) 2007,2011 GeoSolutions S.A.S.
* http://www.geo-solutions.it
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License.
* 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:
*
* This library 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
* Lesser General Public License for more details.
* 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.publisher;
import static org.junit.Assert.assertEquals;
@ -31,7 +40,7 @@ import org.springframework.core.io.ClassPathResource;
* We need a running GeoServer to properly run the tests.
* If such geoserver instance cannot be contacted, tests will be skipped.
*
* @author Alessio Fabiani
* @author Alessio Fabiani, GeoSolutions S.A.S.
*
*/
public class GeoserverRESTImporterTest extends GeoserverRESTTest {

View File

@ -241,6 +241,52 @@ public class GeoserverRESTShapeTest extends GeoserverRESTTest {
assertFalse(reader.existsStyle(styleName));
}
@Test
public void testPublishDeleteStyledInWorkspaceShapeZip() throws FileNotFoundException, IOException {
if (!enabled()) {
return;
}
deleteAllWorkspacesRecursively();
// Assume.assumeTrue(enabled);
assertTrue(publisher.createWorkspace(DEFAULT_WS));
String ns = "geosolutions";
String storeName = "resttestshp";
String layerName = "cities";
final String styleName = "restteststyle";
File zipFile = new ClassPathResource("testdata/resttestshp.zip").getFile();
publisher.removeDatastore(DEFAULT_WS, storeName,true);
publisher.removeStyleInWorkspace(DEFAULT_WS, styleName);
File sldFile = new ClassPathResource("testdata/restteststyle.sld").getFile();
// insert style
boolean sldpublished = publisher.publishStyleInWorkspace(DEFAULT_WS, sldFile); // Will take the name from sld contents
assertTrue("style publish() failed", sldpublished);
assertTrue(reader.existsStyle(DEFAULT_WS, styleName));
// test insert
boolean published = publisher.publishShp(ns, storeName, layerName, zipFile, "EPSG:4326", DEFAULT_WS + ":" + styleName);
assertTrue("publish() failed", published);
assertTrue(existsLayer(layerName));
RESTLayer layer = reader.getLayer(layerName);
// RESTLayer layerDecoder = new RESTLayer(layer);
LOGGER.info("Layer style is " + layer.getDefaultStyle());
assertEquals("Style not assigned properly", DEFAULT_WS + ":" + styleName, layer.getDefaultStyle());
assertEquals("Style not assigned properly", DEFAULT_WS, layer.getDefaultStyleWorkspace());
// remove also datastore
boolean dsRemoved = publisher.removeDatastore(ns, storeName,true);
assertTrue("removeDatastore() failed", dsRemoved);
//test delete style
boolean oksld = publisher.removeStyleInWorkspace(DEFAULT_WS, styleName);
assertTrue("Unpublish() failed", oksld);
assertFalse(reader.existsStyle(styleName));
}
@Test
public void testPublishDeleteShapeZipWithParams() throws FileNotFoundException, IOException {
if (!enabled()) {

View File

@ -1,7 +1,7 @@
/*
* GeoServer-Manager - Simple Manager Library for GeoServer
*
* Copyright (C) 2007,2015 GeoSolutions S.A.S.
* Copyright (C) 2007-2016 GeoSolutions S.A.S.
* http://www.geo-solutions.it
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
@ -26,8 +26,6 @@
package it.geosolutions.geoserver.rest.publisher;
import it.geosolutions.geoserver.rest.GeoserverRESTTest;
import static it.geosolutions.geoserver.rest.GeoserverRESTTest.publisher;
import static it.geosolutions.geoserver.rest.GeoserverRESTTest.reader;
import it.geosolutions.geoserver.rest.decoder.RESTLayer;
import it.geosolutions.geoserver.rest.decoder.RESTStyle;
import it.geosolutions.geoserver.rest.decoder.utils.JDOMBuilder;
@ -57,27 +55,27 @@ import org.springframework.core.io.ClassPathResource;
*/
public class GeoserverRESTStyleTest extends GeoserverRESTTest {
private final static Logger LOGGER = LoggerFactory
.getLogger(GeoserverRESTStyleTest.class);
private final static Logger LOGGER = LoggerFactory.getLogger(GeoserverRESTStyleTest.class);
@Test
public void testStyles() throws IOException {
if (!enabled())
return;
deleteAll();
@Test
public void testStyles() throws IOException
{
if (!enabled()) {
return;
}
deleteAll();
assertEquals(0, reader.getStyles().size());
assertEquals(0, reader.getStyles().size());
final String STYLENAME = "restteststyle";
File sldFile = new ClassPathResource("testdata/restteststyle.sld")
.getFile();
final String STYLENAME = "restteststyle";
File sldFile = new ClassPathResource("testdata/restteststyle.sld").getFile();
// insert style
assertTrue(publisher.publishStyle(sldFile));
assertTrue(reader.existsStyle(STYLENAME));
// insert style
assertTrue(publisher.publishStyle(sldFile));
assertTrue(reader.existsStyle(STYLENAME));
assertFalse(publisher.publishStyle(sldFile));
assertTrue(reader.existsStyle(STYLENAME));
assertFalse(publisher.publishStyle(sldFile));
assertTrue(reader.existsStyle(STYLENAME));
// insert style v110
final String STYLENAMEV110 = "restteststyleV110";
@ -92,288 +90,292 @@ public class GeoserverRESTStyleTest extends GeoserverRESTTest {
assertEquals(STYLENAME, style.getName());
assertNull(style.getWorkspace());
String sld = reader.getSLD(STYLENAME);
assertNotNull(sld);
String sld = reader.getSLD(STYLENAME);
assertNotNull(sld);
Element styleEl = JDOMBuilder.buildElement(sld);
assertNotNull(styleEl);
Element styleEl = JDOMBuilder.buildElement(sld);
assertNotNull(styleEl);
Namespace SLDNS = Namespace.getNamespace("sld",
"http://www.opengis.net/sld");
Namespace SLDNS = Namespace.getNamespace("sld", "http://www.opengis.net/sld");
try {
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(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(2, reader.getStyles().size());
}
// assertEquals(1475, sld.length());
protected void cleanupTestStyle(final String styleName)
{
// dry run delete to work in a known state
if (reader.existsStyle(styleName)) {
LOGGER.info("Clearing stale test style " + styleName);
boolean ok = publisher.removeStyle(styleName);
if (!ok) {
fail("Could not unpublish style " + styleName);
}
}
assertFalse("Cleanup failed", reader.existsStyle(styleName));
}
assertEquals(2, reader.getStyles().size());
}
@Test
public void testPublishDeleteStyleFile() throws FileNotFoundException,
IOException {
if (!enabled()) {
return;
}
// Assume.assumeTrue(enabled);
final String styleName = "restteststyle";
protected void cleanupTestStyle(final String styleName) {
// dry run delete to work in a known state
if (reader.existsStyle(styleName)) {
LOGGER.info("Clearing stale test style " + styleName);
boolean ok = publisher.removeStyle(styleName);
if (!ok) {
fail("Could not unpublish style " + styleName);
}
}
assertFalse("Cleanup failed", reader.existsStyle(styleName));
}
File sldFile = new ClassPathResource("testdata/restteststyle.sld")
.getFile();
@Test
public void testPublishDeleteStyleFile() throws FileNotFoundException,
IOException {
if (!enabled()) {
return;
}
// Assume.assumeTrue(enabled);
final String styleName = "restteststyle";
final String STYLENAMEV110 = "restteststyleV110";
File sldFileV110 = new ClassPathResource("testdata/" + STYLENAMEV110 + ".sld")
.getFile();
File sldFile = new ClassPathResource("testdata/restteststyle.sld")
.getFile();
// known state?
cleanupTestStyle(styleName);
cleanupTestStyle(STYLENAMEV110);
final String STYLENAMEV110 = "restteststyleV110";
File sldFileV110 = new ClassPathResource("testdata/" + STYLENAMEV110 + ".sld")
.getFile();
// test insert
boolean published = publisher.publishStyle(sldFile); // Will take the
// name from sld
// contents
assertTrue("publish() failed", published);
assertTrue(reader.existsStyle(styleName));
// known state?
cleanupTestStyle(styleName);
cleanupTestStyle(STYLENAMEV110);
sldFile = new ClassPathResource("testdata/restteststyle2.sld").getFile();
published = publisher.updateStyle(sldFile, styleName); // update
assertTrue("update() failed", published);
// test insert
boolean published = publisher.publishStyle(sldFile); // Will take the
// name from sld
// contents
assertTrue("publish() failed", published);
assertTrue(reader.existsStyle(styleName));
// test delete
boolean ok = publisher.removeStyle(styleName);
assertTrue("Unpublish() failed", ok);
assertFalse(reader.existsStyle(styleName));
sldFile = new ClassPathResource("testdata/restteststyle2.sld").getFile();
published = publisher.updateStyle(sldFile, styleName); // update
assertTrue("update() failed", published);
published = publisher.publishStyle(sldFileV110, STYLENAMEV110, true);
// test delete
boolean ok = publisher.removeStyle(styleName);
assertTrue("Unpublish() failed", ok);
assertFalse(reader.existsStyle(styleName));
assertTrue("publish() failed", published);
assertTrue(reader.existsStyle(STYLENAMEV110));
published = publisher.publishStyle(sldFileV110, STYLENAMEV110, true);
boolean updated = publisher.updateStyle(sldFileV110, STYLENAMEV110, true);
assertTrue("update() failed", updated);
assertTrue("publish() failed", published);
assertTrue(reader.existsStyle(STYLENAMEV110));
// test delete
ok = publisher.removeStyle(STYLENAMEV110);
assertTrue("Unpublish() failed", ok);
assertFalse(reader.existsStyle(STYLENAMEV110));
}
boolean updated = publisher.updateStyle(sldFileV110, STYLENAMEV110, true);
assertTrue("update() failed", updated);
@Test
public void testPublishDeleteStyleString()
throws FileNotFoundException, IOException
{
if (!enabled()) {
return;
}
// Assume.assumeTrue(enabled);
String styleName = "restteststyle";
// test delete
ok = publisher.removeStyle(STYLENAMEV110);
assertTrue("Unpublish() failed", ok);
assertFalse(reader.existsStyle(STYLENAMEV110));
}
File sldFile = new ClassPathResource("testdata/restteststyle.sld")
.getFile();
@Test
public void testPublishDeleteStyleString() throws FileNotFoundException,
IOException {
if (!enabled()) {
return;
}
// Assume.assumeTrue(enabled);
String styleName = "restteststyle";
// known state?
cleanupTestStyle(styleName);
File sldFile = new ClassPathResource("testdata/restteststyle.sld")
.getFile();
// test insert
String sldContent = IOUtils.toString(new FileInputStream(sldFile));
// known state?
cleanupTestStyle(styleName);
boolean published = publisher.publishStyle(sldContent); // Will take the
// name from sld
// contents
assertTrue("publish() failed", published);
assertTrue(reader.existsStyle(styleName));
// test delete
boolean ok = publisher.removeStyle(styleName);
assertTrue("Unpublish() failed", ok);
assertFalse(reader.existsStyle(styleName));
// test insert
String sldContent = IOUtils.toString(new FileInputStream(sldFile));
styleName = "restteststyle_with_name";
// test insert with name
published = publisher.publishStyle(sldContent, styleName); // Will set
// the name
assertTrue("publish() failed", published);
assertTrue(reader.existsStyle(styleName));
String newSldContent = sldContent.replace(
"<sld:Title>STYLE FOR TESTING PURPOSES</sld:Title>",
"<sld:Title>MODIFIED STYLE FOR TESTING</sld:Title>");
published = publisher.updateStyle(newSldContent, styleName); // update
assertTrue("publish() failed", published);
boolean published = publisher.publishStyle(sldContent); // Will take the
// name from sld
// contents
assertTrue("publish() failed", published);
assertTrue(reader.existsStyle(styleName));
// test delete
boolean ok = publisher.removeStyle(styleName);
assertTrue("Unpublish() failed", ok);
assertFalse(reader.existsStyle(styleName));
// test delete
ok = publisher.removeStyle(styleName);
assertTrue("Unpublish() failed", ok);
assertFalse(reader.existsStyle(styleName));
styleName = "restteststyle_with_name";
// test insert with name
published = publisher.publishStyle(sldContent, styleName); // Will set
// the name
assertTrue("publish() failed", published);
assertTrue(reader.existsStyle(styleName));
String newSldContent = sldContent.replace(
"<sld:Title>STYLE FOR TESTING PURPOSES</sld:Title>",
"<sld:Title>MODIFIED STYLE FOR TESTING</sld:Title>");
published = publisher.updateStyle(newSldContent, styleName); // update
assertTrue("publish() failed", published);
}
// test delete
ok = publisher.removeStyle(styleName);
assertTrue("Unpublish() failed", ok);
assertFalse(reader.existsStyle(styleName));
@Test
public void testUpdateDefaultStyle()
throws FileNotFoundException, IOException
{
if (!enabled()) {
return;
}
deleteAll();
}
String storeName = "resttestshp";
String layerName = "cities";
@Test
public void testUpdateDefaultStyle() throws FileNotFoundException,
IOException {
if (!enabled()) {
return;
}
deleteAll();
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));
}
String storeName = "resttestshp";
String layerName = "cities";
final String styleName2 = "restteststyle2";
{
File sldFile = new ClassPathResource("testdata/restteststyle2.sld")
.getFile();
cleanupTestStyle(styleName2);
boolean sldpublished = publisher.publishStyle(sldFile, styleName2);
assertTrue("style publish() failed", sldpublished);
assertTrue(reader.existsStyle(styleName2));
}
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));
}
File zipFile = new ClassPathResource("testdata/resttestshp.zip")
.getFile();
final String styleName2 = "restteststyle2";
{
File sldFile = new ClassPathResource("testdata/restteststyle2.sld")
.getFile();
cleanupTestStyle(styleName2);
boolean sldpublished = publisher.publishStyle(sldFile, styleName2);
assertTrue("style publish() failed", sldpublished);
assertTrue(reader.existsStyle(styleName2));
}
assertTrue(publisher.createWorkspace(DEFAULT_WS));
File zipFile = new ClassPathResource("testdata/resttestshp.zip")
.getFile();
// test insert
boolean published = publisher.publishShp(DEFAULT_WS, storeName,
layerName, zipFile, "EPSG:4326", styleName);
assertTrue("publish() failed", published);
assertTrue(existsLayer(layerName));
assertTrue(publisher.createWorkspace(DEFAULT_WS));
{
RESTLayer layer = reader.getLayer(layerName);
LOGGER.info("Layer style is " + layer.getDefaultStyle());
assertEquals(styleName, layer.getDefaultStyle());
}
// test insert
boolean published = publisher.publishShp(DEFAULT_WS, storeName,
layerName, zipFile, "EPSG:4326", styleName);
assertTrue("publish() failed", published);
assertTrue(existsLayer(layerName));
GSLayerEncoder le = new GSLayerEncoder();
le.setDefaultStyle(styleName2);
publisher.configureLayer(DEFAULT_WS, layerName, le);
{
RESTLayer layer = reader.getLayer(layerName);
LOGGER.info("Layer style is " + layer.getDefaultStyle());
assertEquals(styleName, layer.getDefaultStyle());
}
{
RESTLayer layer = reader.getLayer(layerName);
LOGGER.info("Layer style is " + layer.getDefaultStyle());
assertEquals(styleName2, layer.getDefaultStyle());
}
GSLayerEncoder le = new GSLayerEncoder();
le.setDefaultStyle(styleName2);
publisher.configureLayer(DEFAULT_WS, layerName, le);
// remove layer and datastore
boolean dsRemoved = publisher.removeDatastore(DEFAULT_WS, storeName,
true);
assertTrue("removeDatastore() failed", dsRemoved);
}
{
RESTLayer layer = reader.getLayer(layerName);
LOGGER.info("Layer style is " + layer.getDefaultStyle());
assertEquals(styleName2, layer.getDefaultStyle());
}
// remove layer and datastore
boolean dsRemoved = publisher.removeDatastore(DEFAULT_WS, storeName,
true);
assertTrue("removeDatastore() failed", dsRemoved);
}
@Test
public void testStylesInWorkspace() throws IOException {
if (!enabled())
return;
deleteAll();
@Test
public void testStylesInWorkspace() throws IOException
{
if (!enabled()) {
return;
}
deleteAll();
final String WORKSPACE = "testWorkspace";
final String STYLENAME = "restteststyle";
File sldFile = new ClassPathResource("testdata/restteststyle.sld").getFile();
final String STYLENAME = "restteststyle";
File sldFile = new ClassPathResource("testdata/restteststyle.sld").getFile();
publisher.createWorkspace(WORKSPACE);
assertEquals(0, reader.getStyles().size());
assertEquals(0, reader.getStyles(WORKSPACE).size());
assertEquals(0, reader.getStyles().size());
assertEquals(0, reader.getStyles(WORKSPACE).size());
// insert style
assertTrue("Error inserting style", publisher.publishStyleInWorkspace(WORKSPACE, sldFile));
assertTrue("Style does not exist in workspace", reader.existsStyle(WORKSPACE, STYLENAME));
// insert style
assertTrue(publisher.publishStyleInWorkspace(WORKSPACE, sldFile));
assertTrue(reader.existsStyle(WORKSPACE, STYLENAME));
assertFalse(reader.existsStyle(STYLENAME));
// this assertion is not enforced by geoserver, which is quite lenient in searching names
//assertFalse("Style should not be global", reader.existsStyle(STYLENAME));
// insert style again
assertFalse(publisher.publishStyleInWorkspace(WORKSPACE, sldFile));
assertTrue(reader.existsStyle(WORKSPACE, STYLENAME));
assertFalse(reader.existsStyle(STYLENAME));
assertFalse("Dup style not trapped", publisher.publishStyleInWorkspace(WORKSPACE, sldFile));
assertTrue("Style does not exist in workspace (2)", reader.existsStyle(WORKSPACE, STYLENAME));
// this assertion is not enforced by geoserver, which is quite lenient in searching names
//assertFalse("Style should not be global (2)", reader.existsStyle(STYLENAME));
String sld = reader.getSLD(WORKSPACE, STYLENAME);
assertNotNull(sld);
String sld = reader.getSLD(WORKSPACE, STYLENAME);
assertNotNull(sld);
RESTStyle style = reader.getStyle(WORKSPACE, STYLENAME);
assertEquals(STYLENAME, style.getName());
assertEquals(WORKSPACE, style.getWorkspace());
Element styleEl = JDOMBuilder.buildElement(sld);
assertNotNull(styleEl);
Element styleEl = JDOMBuilder.buildElement(sld);
assertNotNull(styleEl);
Namespace SLDNS = Namespace.getNamespace("sld",
"http://www.opengis.net/sld");
Namespace SLDNS = Namespace.getNamespace("sld", "http://www.opengis.net/sld");
try {
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(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(1475, sld.length());
assertEquals(0, reader.getStyles().size());
assertEquals(1, reader.getStyles(WORKSPACE).size());
}
assertEquals(0, reader.getStyles().size());
assertEquals(1, reader.getStyles(WORKSPACE).size());
}
@Test
public void testRemoveStylesInWorkspace() throws IOException {
if (!enabled())
return;
deleteAll();
@Test
public void testRemoveStylesInWorkspace() throws IOException
{
if (!enabled()) {
return;
}
deleteAll();
final String WORKSPACE = "testWorkspace";
final String STYLENAME = "restteststyle";
final File sldFile = new ClassPathResource("testdata/restteststyle.sld").getFile();
final String STYLENAME = "restteststyle";
final File sldFile = new ClassPathResource("testdata/restteststyle.sld").getFile();
publisher.createWorkspace(WORKSPACE);
assertEquals(0, reader.getStyles(WORKSPACE).size());
assertEquals(0, reader.getStyles(WORKSPACE).size());
// insert style
assertTrue(publisher.publishStyleInWorkspace(WORKSPACE, sldFile));
assertEquals(1, reader.getStyles(WORKSPACE).size());
// insert style
assertTrue(publisher.publishStyleInWorkspace(WORKSPACE, sldFile));
assertEquals(1, reader.getStyles(WORKSPACE).size());
assertTrue(reader.existsStyle(WORKSPACE, STYLENAME));
// remove style
assertTrue(publisher.removeStyleInWorkspace(WORKSPACE, STYLENAME, true));
assertEquals(0, reader.getStyles(WORKSPACE).size());
assertEquals(0, reader.getStyles(WORKSPACE).size());
assertFalse(reader.existsStyle(WORKSPACE, STYLENAME));
}

View File

@ -33,8 +33,6 @@ import java.io.IOException;
import org.junit.Test;
import static org.junit.Assert.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.ClassPathResource;
/**
@ -47,8 +45,6 @@ import org.springframework.core.io.ClassPathResource;
*/
public class GeoserverRESTWorkspaceTest extends GeoserverRESTTest {
private final static Logger LOGGER = LoggerFactory.getLogger(GeoserverRESTWorkspaceTest.class);
@Test
public void testWorkspaces() {
if (!enabled()) return;

View File

@ -35,8 +35,6 @@ import org.apache.commons.httpclient.NameValuePair;
import org.junit.Test;
import static org.junit.Assert.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.ClassPathResource;
/**
@ -48,8 +46,6 @@ import org.springframework.core.io.ClassPathResource;
*/
public class GeoserverRESTWorldImageTest extends GeoserverRESTTest {
private final static Logger LOGGER = LoggerFactory.getLogger(GeoserverRESTWorldImageTest.class);
@Test
public void testPublishWorldImage() throws IOException {

View File

@ -0,0 +1,12 @@
ncols 4
nrows 6
xllcorner 0.0
yllcorner 0.0
cellsize 50.0
NODATA_value -9999
-9999 -9999 5 2
-9999 20 100 36
3 8 35 10
32 42 50 6
88 75 27 9
13 5 1 -9999

View File

@ -0,0 +1,22 @@
<wmsStore>
<name>wmsstore001</name>
<type>WMS</type>
<enabled>true</enabled>
<workspace>
<name>ws001</name>
<atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="alternate" href="http://172.27.30.25:8080/geoserver/rest/workspaces/ws001.xml" type="application/xml"/>
</workspace>
<metadata>
<entry key="useConnectionPooling">true</entry>
</metadata>
<__default>false</__default>
<capabilitiesURL>http://myhost/geoserver/wms</capabilitiesURL>
<user>admin</user>
<password>geoserver</password>
<maxConnections>6</maxConnections>
<readTimeout>60</readTimeout>
<connectTimeout>30</connectTimeout>
<wmsLayers>
<atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="alternate" href="http://172.27.30.25:8080/geoserver/rest/workspaces/ws001/wmsstores/wmsstore001/wmslayers.xml" type="application/xml"/>
</wmsLayers>
</wmsStore>