- align and update version
This commit is contained in:
parent
c0bd2cd69a
commit
255fd8eb4b
15
.travis.yml
Normal file
15
.travis.yml
Normal 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
|
||||
@ -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
16
README
@ -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
68
README.md
Normal file
@ -0,0 +1,68 @@
|
||||
# geoserver-manager
|
||||
## Status
|
||||
* Master on travis [](https://travis-ci.org/geosolutions-it/geoserver-manager)
|
||||
* Master on Linux + OracleJDK7 [](http://build.geo-solutions.it/jenkins/view/GeoServer-manager/job/GeoServer-Manager-Master/)
|
||||
* Master on Windows + OracleJDK7 [](http://winbuild.geo-solutions.it/jenkins/view/GeoServer-Manager/job/GeoServer-Manager-Master/)
|
||||
* Stable on Linux + OracleJDK7 [](http://build.geo-solutions.it/jenkins/view/GeoServer-manager/job/GeoServer-Manager-Stable/)
|
||||
* Stable on Windows + OracleJDK7 [](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.
|
||||
|
||||
101
pom.xml
101
pom.xml
@ -1,39 +1,50 @@
|
||||
<!-- * 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"
|
||||
<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>
|
||||
|
||||
<groupId>it.geosolutions</groupId>
|
||||
<artifactId>geoserver-manager</artifactId>
|
||||
<version>1.7-SNAPSHOT</version>
|
||||
<version>1.8-SNAPSHOT</version>
|
||||
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>GeoServer 2 Manager - REST based</name>
|
||||
<name>GeoServer Manager - REST based</name>
|
||||
<description>
|
||||
GeoServer Manager is a library to interact with GeoServer 2.x.
|
||||
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>
|
||||
|
||||
<url>https://github.com/geosolutions-it/geoserver-manager</url>
|
||||
|
||||
<organization>
|
||||
<name>GeoSolutions</name>
|
||||
<url>http://www.geo-solutions.it</url>
|
||||
@ -74,11 +85,9 @@
|
||||
</license>
|
||||
</licenses>
|
||||
|
||||
<url>http://code.google.com/p/geoserver-manager/</url>
|
||||
|
||||
<issueManagement>
|
||||
<system>googlecode</system>
|
||||
<url>http://code.google.com/p/geoserver-manager/issues/list</url>
|
||||
<system>GitHub</system>
|
||||
<url>https://github.com/geosolutions-it/geoserver-manager/issues</url>
|
||||
</issueManagement>
|
||||
|
||||
<mailingLists>
|
||||
@ -91,14 +100,12 @@
|
||||
|
||||
<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>
|
||||
|
||||
<ciManagement>
|
||||
<system>jenkins</system>
|
||||
<url>http://ci.geo-solutions.it/</url>
|
||||
<url>http://build.geo-solutions.it/jenkins/view/GeoServer-manager/</url>
|
||||
</ciManagement>
|
||||
|
||||
|
||||
@ -227,7 +234,7 @@
|
||||
<extension>
|
||||
<groupId>org.apache.maven.wagon</groupId>
|
||||
<artifactId>wagon-ftp</artifactId>
|
||||
<version>1.0-beta-7</version>
|
||||
<version>2.6</version>
|
||||
</extension>
|
||||
</extensions>
|
||||
</build>
|
||||
@ -246,14 +253,11 @@
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
<!-- <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>cobertura-maven-plugin</artifactId>
|
||||
<version>2.2</version> </plugin> -->
|
||||
</plugins>
|
||||
</reporting>
|
||||
|
||||
<properties>
|
||||
<slf4j.version>1.5.11</slf4j.version>
|
||||
<gs.version>2.8-SNAPSHOT</gs.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
@ -281,12 +285,14 @@
|
||||
<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>
|
||||
@ -303,15 +309,24 @@
|
||||
<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> -->
|
||||
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 -->
|
||||
<!--================================================================= -->
|
||||
@ -336,18 +351,6 @@
|
||||
</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>
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
//==========================================================================
|
||||
|
||||
|
||||
@ -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)
|
||||
|
||||
// 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);
|
||||
|
||||
@ -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());
|
||||
|
||||
@ -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");
|
||||
// }
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@ -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) {
|
||||
|
||||
@ -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
|
||||
*
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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());
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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");
|
||||
}
|
||||
}
|
||||
@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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("");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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.");
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
/**
|
||||
@ -46,11 +43,11 @@ public class UtilTest extends GeoserverRESTTest {
|
||||
|
||||
private final static Logger LOGGER = LoggerFactory.getLogger(UtilTest.class);
|
||||
|
||||
|
||||
@Test
|
||||
public void testSearchStyle() throws IOException {
|
||||
if (!enabled())
|
||||
if (!enabled()) {
|
||||
return;
|
||||
}
|
||||
deleteAll();
|
||||
|
||||
final String WORKSPACE = "testWorkspace";
|
||||
@ -67,7 +64,10 @@ public class UtilTest extends GeoserverRESTTest {
|
||||
// insert style in workspace
|
||||
assertTrue(publisher.publishStyleInWorkspace(WORKSPACE, sldFile, STYLENAME));
|
||||
assertTrue(reader.existsStyle(WORKSPACE, STYLENAME));
|
||||
assertFalse(reader.existsStyle(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());
|
||||
@ -78,18 +78,29 @@ public class UtilTest extends GeoserverRESTTest {
|
||||
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());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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("\"", ""));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
@ -129,9 +129,14 @@ public class GSCoverageEncoderTest extends TestCase {
|
||||
"dobson units³", "REAL_32BITS");
|
||||
encoder.addCoverageDimensionInfo(gsCoverageDimensionEncoder);
|
||||
|
||||
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());
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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");
|
||||
@ -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));
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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()) {
|
||||
|
||||
@ -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,20 +55,20 @@ 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())
|
||||
public void testStyles() throws IOException
|
||||
{
|
||||
if (!enabled()) {
|
||||
return;
|
||||
}
|
||||
deleteAll();
|
||||
|
||||
assertEquals(0, reader.getStyles().size());
|
||||
|
||||
final String STYLENAME = "restteststyle";
|
||||
File sldFile = new ClassPathResource("testdata/restteststyle.sld")
|
||||
.getFile();
|
||||
File sldFile = new ClassPathResource("testdata/restteststyle.sld").getFile();
|
||||
|
||||
// insert style
|
||||
assertTrue(publisher.publishStyle(sldFile));
|
||||
@ -98,11 +96,9 @@ public class GeoserverRESTStyleTest extends GeoserverRESTTest {
|
||||
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 {
|
||||
|
||||
assertEquals(STYLENAME, styleEl.getChild("NamedLayer", SLDNS)
|
||||
.getChild("Name", SLDNS).getText());
|
||||
assertEquals("STYLE FOR TESTING PURPOSES",
|
||||
@ -114,11 +110,11 @@ public class GeoserverRESTStyleTest extends GeoserverRESTTest {
|
||||
}
|
||||
|
||||
// assertEquals(1475, sld.length());
|
||||
|
||||
assertEquals(2, reader.getStyles().size());
|
||||
}
|
||||
|
||||
protected void cleanupTestStyle(final String styleName) {
|
||||
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);
|
||||
@ -181,8 +177,9 @@ public class GeoserverRESTStyleTest extends GeoserverRESTTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPublishDeleteStyleString() throws FileNotFoundException,
|
||||
IOException {
|
||||
public void testPublishDeleteStyleString()
|
||||
throws FileNotFoundException, IOException
|
||||
{
|
||||
if (!enabled()) {
|
||||
return;
|
||||
}
|
||||
@ -228,8 +225,9 @@ public class GeoserverRESTStyleTest extends GeoserverRESTTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdateDefaultStyle() throws FileNotFoundException,
|
||||
IOException {
|
||||
public void testUpdateDefaultStyle()
|
||||
throws FileNotFoundException, IOException
|
||||
{
|
||||
if (!enabled()) {
|
||||
return;
|
||||
}
|
||||
@ -295,9 +293,11 @@ public class GeoserverRESTStyleTest extends GeoserverRESTTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStylesInWorkspace() throws IOException {
|
||||
if (!enabled())
|
||||
public void testStylesInWorkspace() throws IOException
|
||||
{
|
||||
if (!enabled()) {
|
||||
return;
|
||||
}
|
||||
deleteAll();
|
||||
|
||||
final String WORKSPACE = "testWorkspace";
|
||||
@ -309,16 +309,18 @@ public class GeoserverRESTStyleTest extends GeoserverRESTTest {
|
||||
assertEquals(0, reader.getStyles().size());
|
||||
assertEquals(0, reader.getStyles(WORKSPACE).size());
|
||||
|
||||
|
||||
// insert style
|
||||
assertTrue(publisher.publishStyleInWorkspace(WORKSPACE, sldFile));
|
||||
assertTrue(reader.existsStyle(WORKSPACE, STYLENAME));
|
||||
assertFalse(reader.existsStyle(STYLENAME));
|
||||
assertTrue("Error inserting style", publisher.publishStyleInWorkspace(WORKSPACE, sldFile));
|
||||
assertTrue("Style does not exist in workspace", reader.existsStyle(WORKSPACE, 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);
|
||||
@ -330,8 +332,7 @@ public class GeoserverRESTStyleTest extends GeoserverRESTTest {
|
||||
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 {
|
||||
|
||||
@ -347,15 +348,16 @@ public class GeoserverRESTStyleTest extends GeoserverRESTTest {
|
||||
}
|
||||
|
||||
// assertEquals(1475, sld.length());
|
||||
|
||||
assertEquals(0, reader.getStyles().size());
|
||||
assertEquals(1, reader.getStyles(WORKSPACE).size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRemoveStylesInWorkspace() throws IOException {
|
||||
if (!enabled())
|
||||
public void testRemoveStylesInWorkspace() throws IOException
|
||||
{
|
||||
if (!enabled()) {
|
||||
return;
|
||||
}
|
||||
deleteAll();
|
||||
|
||||
final String WORKSPACE = "testWorkspace";
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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 {
|
||||
|
||||
|
||||
12
src/test/resources/testdata/resttestdem.asc
vendored
Normal file
12
src/test/resources/testdata/resttestdem.asc
vendored
Normal 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
|
||||
22
src/test/resources/testdata/wmsstoreExample.xml
vendored
Normal file
22
src/test/resources/testdata/wmsstoreExample.xml
vendored
Normal 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>
|
||||
Loading…
Reference in New Issue
Block a user