diff --git a/src/main/java/it/geosolutions/geoserver/rest/GeoServerRESTPublisher.java b/src/main/java/it/geosolutions/geoserver/rest/GeoServerRESTPublisher.java
index 50e4dfe..67e24eb 100644
--- a/src/main/java/it/geosolutions/geoserver/rest/GeoServerRESTPublisher.java
+++ b/src/main/java/it/geosolutions/geoserver/rest/GeoServerRESTPublisher.java
@@ -35,7 +35,7 @@ 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.datastore.GSAbstractDatastoreEncoder;
-import it.geosolutions.geoserver.rest.encoder.datastore.GSPostGISDatastoreEncoder;
+import it.geosolutions.geoserver.rest.encoder.GSPostGISDatastoreEncoder;
import it.geosolutions.geoserver.rest.encoder.feature.GSFeatureTypeEncoder;
import java.io.File;
@@ -694,6 +694,8 @@ public class GeoServerRESTPublisher {
*
* @return true if the PostGIS datastore has been successfully
* created, false otherwise
+ * @deprecated Will be deleted in next version 1.5.x.
+ * Use {@link #createDatastore(String, GSAbstractDatastoreEncoder)} instead.
*/
public boolean createPostGISDatastore(String workspace,
GSPostGISDatastoreEncoder datastoreEncoder) {
@@ -705,7 +707,7 @@ public class GeoServerRESTPublisher {
}
/**
- * Create a datastore (any datastore extending GSAbstractDatastoreEncoder).
+ * Create a datastore (any datastore extending {@link GSAbstractDatastoreEncoder}).
*
* @param workspace
* Name of the workspace to contain the datastore. This will also
@@ -726,7 +728,7 @@ public class GeoServerRESTPublisher {
}
/**
- * Update a datastore (any datastore extending GSAbstractDatastoreEncoder).
+ * Update a datastore (any datastore extending {@link GSAbstractDatastoreEncoder}).
*
* @param workspace
* Name of the workspace that contains the datastore.
diff --git a/src/main/java/it/geosolutions/geoserver/rest/encoder/GSPostGISDatastoreEncoder.java b/src/main/java/it/geosolutions/geoserver/rest/encoder/GSPostGISDatastoreEncoder.java
new file mode 100644
index 0000000..0d85ff0
--- /dev/null
+++ b/src/main/java/it/geosolutions/geoserver/rest/encoder/GSPostGISDatastoreEncoder.java
@@ -0,0 +1,260 @@
+/*
+ * 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.encoder;
+
+import it.geosolutions.geoserver.rest.encoder.utils.NestedElementEncoder;
+import it.geosolutions.geoserver.rest.encoder.utils.PropertyXMLEncoder;
+
+/**
+ * Geoserver datastore XML encoder.
+ *
+ * @author Eric Grosso
+ * @author ETj
+ * @author Carlo Cancellieri - carlo.cancellieri@geo-solutions.it
+ *
+ * @deprecated Will be removed in next version 1.5.x.
+ * Use {@link it.geosolutions.geoserver.rest.encoder.datastore.GSPostGISDatastoreEncoder} instead.
+ */
+public class GSPostGISDatastoreEncoder extends PropertyXMLEncoder {
+
+ private NestedElementEncoder connectionParameters = new NestedElementEncoder("connectionParameters");
+
+ public GSPostGISDatastoreEncoder() {
+ super("dataStore");
+ addContent(connectionParameters.getRoot());
+
+ addType("PostGIS"); // may be overwritten with e.g. "PostGIS (JNDI)"
+ addDatabaseType("postgis");
+ }
+
+ /**
+ * Set some initial defaults.
+ *
+ * The default parameters are as follows:
+ * - maximum connections: 10,
+ * - minimum connections: 1,
+ * - fetch size: 1000,
+ * - connection timeout: 20 seconds,
+ * - loose BBox: true,
+ * - prepared statements: false,
+ * - maximum open prepared statements: 50.
+ *
+ */
+ public void defaultInit() {
+ setMinConnections(1);
+ setMaxConnections(10);
+ setFetchSize(1000);
+ setConnectionTimeout(20);
+ setLooseBBox(true);
+ setPreparedStatements(false);
+ setMaxOpenPreparedStatements(50);
+ }
+
+ protected void addName(String name) {
+ add("name", name);
+ }
+
+ public void setName(String name) {
+ set("name", name);
+ }
+
+ protected void addDescription(String description) {
+ add("description", description);
+ }
+
+ public void setDescription(String description) {
+ set("description", description);
+ }
+
+ protected void addType(String type) {
+ add("type", type);
+ }
+
+ public void setType(String type) {
+ set("type", type);
+ }
+
+ protected void addEnabled(boolean enabled) {
+ add("enabled", Boolean.toString(enabled));
+ }
+
+ public void setEnabled(boolean enabled) {
+ set("enabled", Boolean.toString(enabled));
+ }
+
+ protected void addNamespace(String namespace) {
+ connectionParameters.add("namespace", namespace);
+ }
+
+ public void setNamespace(String namespace) {
+ connectionParameters.set("namespace", namespace);
+ }
+
+ protected void addHost(String host) {
+ connectionParameters.add("host", host);
+ }
+
+ public void setHost(String host) {
+ connectionParameters.set("host", host);
+ }
+
+ protected void addPort(int port) {
+ connectionParameters.add("port", Integer.toString(port));
+ }
+
+ public void setPort(int port) {
+ connectionParameters.set("port", Integer.toString(port));
+ }
+
+ protected void addDatabase(String database) {
+ connectionParameters.add("database", database);
+ }
+
+ public void setDatabase(String database) {
+ connectionParameters.set("database", database);
+ }
+
+ protected void addSchema(String schema) {
+ connectionParameters.add("schema", schema);
+ }
+
+ public void setSchema(String schema) {
+ connectionParameters.set("schema", schema);
+ }
+
+ protected void addUser(String user) {
+ connectionParameters.add("user", user);
+ }
+
+ public void setUser(String user) {
+ connectionParameters.set("user", user);
+ }
+
+ protected void addPassword(String password) {
+ connectionParameters.add("passwd", password);
+ }
+
+ public void setPassword(String password) {
+ connectionParameters.set("passwd", password);
+ }
+
+ protected void addDatabaseType(String dbtype) {
+ connectionParameters.add("dbtype", dbtype);
+ }
+
+ public void setDatabaseType(String dbtype) {
+ connectionParameters.set("dbtype", dbtype);
+ }
+
+ protected void addJndiReferenceName(String jndiReferenceName) {
+ connectionParameters.add("jndiReferenceName", jndiReferenceName);
+ }
+
+ public void setJndiReferenceName(String jndiReferenceName) {
+ connectionParameters.set("jndiReferenceName", jndiReferenceName);
+ }
+
+ protected void addExposePrimaryKeys(boolean exposePrimaryKeys) {
+ connectionParameters.add("Expose primary keys", Boolean.toString(exposePrimaryKeys));
+ }
+
+ public void setExposePrimaryKeys(boolean exposePrimaryKeys) {
+ connectionParameters.set("Expose primary keys", Boolean.toString(exposePrimaryKeys));
+ }
+
+ protected void addMaxConnections(int maxConnections) {
+ connectionParameters.add("max connections", Integer.toString(maxConnections));
+ }
+
+ public void setMaxConnections(int maxConnections) {
+ connectionParameters.set("max connections", Integer.toString(maxConnections));
+ }
+
+ protected void addMinConnections(int minConnections) {
+ connectionParameters.add("min connections", Integer.toString(minConnections));
+ }
+
+ public void setMinConnections(int minConnections) {
+ connectionParameters.set("min connections", Integer.toString(minConnections));
+ }
+
+ protected void addFetchSize(int fetchSize) {
+ connectionParameters.add("fetch size", Integer.toString(fetchSize));
+ }
+
+ public void setFetchSize(int fetchSize) {
+ connectionParameters.set("fetch size", Integer.toString(fetchSize));
+ }
+
+ protected void addConnectionTimeout(int seconds) {
+ connectionParameters.add("Connection timeout", Integer.toString(seconds));
+ }
+
+ public void setConnectionTimeout(int seconds) {
+ connectionParameters.set("Connection timeout", Integer.toString(seconds));
+ }
+
+ protected void addValidateConnections(boolean validateConnections) {
+ connectionParameters.add("validate connections", Boolean.toString(validateConnections));
+ }
+
+ public void setValidateConnections(boolean validateConnections) {
+ connectionParameters.set("validate connections", Boolean.toString(validateConnections));
+ }
+
+ protected void addPrimaryKeyMetadataTable(String primaryKeyMetadataTable) {
+ connectionParameters.add("Primary key metadata table", primaryKeyMetadataTable);
+ }
+
+ public void setPrimaryKeyMetadataTable(String primaryKeyMetadataTable) {
+ connectionParameters.set("Primary key metadata table", primaryKeyMetadataTable);
+ }
+
+ protected void addLooseBBox(boolean looseBBox) {
+ connectionParameters.add("Loose bbox", Boolean.toString(looseBBox));
+ }
+
+ public void setLooseBBox(boolean looseBBox) {
+ connectionParameters.set("Loose bbox", Boolean.toString(looseBBox));
+ }
+
+ protected void addPreparedStatements(boolean preparedStatements) {
+ connectionParameters.add("preparedStatements", Boolean.toString(preparedStatements));
+ }
+
+ public void setPreparedStatements(boolean preparedStatements) {
+ connectionParameters.set("preparedStatements", Boolean.toString(preparedStatements));
+ }
+
+ protected void addMaxOpenPreparedStatements(int maxOpenPreparedStatements) {
+ connectionParameters.add("Max open prepared statements", Integer.toString(maxOpenPreparedStatements));
+ }
+
+ public void setMaxOpenPreparedStatements(int maxOpenPreparedStatements) {
+ connectionParameters.set("Max open prepared statements", Integer.toString(maxOpenPreparedStatements));
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/it/geosolutions/geoserver/rest/encoder/datastore/GSPostGISDatastoreEncoder.java b/src/main/java/it/geosolutions/geoserver/rest/encoder/datastore/GSPostGISDatastoreEncoder.java
index 0323fb3..19978ee 100644
--- a/src/main/java/it/geosolutions/geoserver/rest/encoder/datastore/GSPostGISDatastoreEncoder.java
+++ b/src/main/java/it/geosolutions/geoserver/rest/encoder/datastore/GSPostGISDatastoreEncoder.java
@@ -1,7 +1,7 @@
/*
* GeoServer-Manager - Simple Manager Library for GeoServer
*
- * Copyright (C) 2007,2011 GeoSolutions S.A.S.
+ * Copyright (C) 2007,2012 GeoSolutions S.A.S.
* http://www.geo-solutions.it
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -22,236 +22,126 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
-
package it.geosolutions.geoserver.rest.encoder.datastore;
-import it.geosolutions.geoserver.rest.encoder.utils.NestedElementEncoder;
-import it.geosolutions.geoserver.rest.encoder.utils.PropertyXMLEncoder;
-
/**
- * Geoserver datastore XML encoder.
+ * Encoder for a {@value #TYPE} datastore.
*
* @author Eric Grosso
* @author ETj
* @author Carlo Cancellieri - carlo.cancellieri@geo-solutions.it
+ * @author Oscar Fonts
*/
-public class GSPostGISDatastoreEncoder extends PropertyXMLEncoder {
+public class GSPostGISDatastoreEncoder extends GSAbstractDatastoreEncoder {
- private NestedElementEncoder connectionParameters = new NestedElementEncoder("connectionParameters");
+ static final String TYPE = "PostGIS";
- public GSPostGISDatastoreEncoder() {
- super("dataStore");
- addContent(connectionParameters.getRoot());
+ static final int DEFAULT_MIN_CONNECTIONS = 1;
+ static final int DEFAULT_MAX_CONNECTIONS = 10;
+ static final int DEFAULT_FETCH_SIZE = 1000;
+ static final int DEFAULT_CONNECTION_TIMEOUT = 20;
+ static final boolean DEFAULT_LOOSE_BBOX = true;
+ static final boolean DEFAULT_PREPARED_STATEMENTS = false;
+ static final int DEFAULT_MAX_OPEN_PREPARED_STATEMENTS = 50;
+
+ public GSPostGISDatastoreEncoder(String name) {
+ super(name);
+
+ // Set mandatory parameter
+ setType(TYPE);
+ setDatabaseType("postgis");
+
+ // Set default values
+ setMinConnections(DEFAULT_MIN_CONNECTIONS);
+ setMaxConnections(DEFAULT_MAX_CONNECTIONS);
+ setFetchSize(DEFAULT_FETCH_SIZE);
+ setConnectionTimeout(DEFAULT_CONNECTION_TIMEOUT);
+ setLooseBBox(DEFAULT_LOOSE_BBOX);
+ setPreparedStatements(DEFAULT_PREPARED_STATEMENTS);
+ setMaxOpenPreparedStatements(DEFAULT_MAX_OPEN_PREPARED_STATEMENTS);
- addType("PostGIS"); // may be overwritten with e.g. "PostGIS (JNDI)"
- addDatabaseType("postgis");
- }
-
- /**
- * Set some initial defaults.
- *
- * The default parameters are as follows:
- * - maximum connections: 10,
- * - minimum connections: 1,
- * - fetch size: 1000,
- * - connection timeout: 20 seconds,
- * - loose BBox: true,
- * - prepared statements: false,
- * - maximum open prepared statements: 50.
- *
- */
- public void defaultInit() {
- setMinConnections(1);
- setMaxConnections(10);
- setFetchSize(1000);
- setConnectionTimeout(20);
- setLooseBBox(true);
- setPreparedStatements(false);
- setMaxOpenPreparedStatements(50);
- }
-
- protected void addName(String name) {
- add("name", name);
- }
-
- public void setName(String name) {
- set("name", name);
- }
-
- protected void addDescription(String description) {
- add("description", description);
- }
-
- public void setDescription(String description) {
- set("description", description);
- }
-
- protected void addType(String type) {
- add("type", type);
- }
-
- public void setType(String type) {
- set("type", type);
- }
-
- protected void addEnabled(boolean enabled) {
- add("enabled", Boolean.toString(enabled));
- }
-
- public void setEnabled(boolean enabled) {
- set("enabled", Boolean.toString(enabled));
- }
-
- protected void addNamespace(String namespace) {
- connectionParameters.add("namespace", namespace);
}
public void setNamespace(String namespace) {
connectionParameters.set("namespace", namespace);
}
- protected void addHost(String host) {
- connectionParameters.add("host", host);
- }
-
public void setHost(String host) {
connectionParameters.set("host", host);
}
-
- protected void addPort(int port) {
- connectionParameters.add("port", Integer.toString(port));
- }
public void setPort(int port) {
connectionParameters.set("port", Integer.toString(port));
}
-
- protected void addDatabase(String database) {
- connectionParameters.add("database", database);
- }
public void setDatabase(String database) {
connectionParameters.set("database", database);
}
- protected void addSchema(String schema) {
- connectionParameters.add("schema", schema);
- }
-
public void setSchema(String schema) {
connectionParameters.set("schema", schema);
}
-
- protected void addUser(String user) {
- connectionParameters.add("user", user);
- }
public void setUser(String user) {
connectionParameters.set("user", user);
}
-
- protected void addPassword(String password) {
- connectionParameters.add("passwd", password);
- }
public void setPassword(String password) {
connectionParameters.set("passwd", password);
}
- protected void addDatabaseType(String dbtype) {
- connectionParameters.add("dbtype", dbtype);
- }
-
public void setDatabaseType(String dbtype) {
connectionParameters.set("dbtype", dbtype);
}
-
- protected void addJndiReferenceName(String jndiReferenceName) {
- connectionParameters.add("jndiReferenceName", jndiReferenceName);
- }
public void setJndiReferenceName(String jndiReferenceName) {
connectionParameters.set("jndiReferenceName", jndiReferenceName);
}
-
- protected void addExposePrimaryKeys(boolean exposePrimaryKeys) {
- connectionParameters.add("Expose primary keys", Boolean.toString(exposePrimaryKeys));
- }
public void setExposePrimaryKeys(boolean exposePrimaryKeys) {
connectionParameters.set("Expose primary keys", Boolean.toString(exposePrimaryKeys));
}
- protected void addMaxConnections(int maxConnections) {
- connectionParameters.add("max connections", Integer.toString(maxConnections));
- }
-
public void setMaxConnections(int maxConnections) {
connectionParameters.set("max connections", Integer.toString(maxConnections));
}
- protected void addMinConnections(int minConnections) {
- connectionParameters.add("min connections", Integer.toString(minConnections));
- }
-
public void setMinConnections(int minConnections) {
connectionParameters.set("min connections", Integer.toString(minConnections));
}
- protected void addFetchSize(int fetchSize) {
- connectionParameters.add("fetch size", Integer.toString(fetchSize));
- }
-
public void setFetchSize(int fetchSize) {
connectionParameters.set("fetch size", Integer.toString(fetchSize));
}
- protected void addConnectionTimeout(int seconds) {
- connectionParameters.add("Connection timeout", Integer.toString(seconds));
- }
-
public void setConnectionTimeout(int seconds) {
connectionParameters.set("Connection timeout", Integer.toString(seconds));
}
- protected void addValidateConnections(boolean validateConnections) {
- connectionParameters.add("validate connections", Boolean.toString(validateConnections));
- }
-
public void setValidateConnections(boolean validateConnections) {
connectionParameters.set("validate connections", Boolean.toString(validateConnections));
}
- protected void addPrimaryKeyMetadataTable(String primaryKeyMetadataTable) {
- connectionParameters.add("Primary key metadata table", primaryKeyMetadataTable);
- }
-
public void setPrimaryKeyMetadataTable(String primaryKeyMetadataTable) {
connectionParameters.set("Primary key metadata table", primaryKeyMetadataTable);
}
- protected void addLooseBBox(boolean looseBBox) {
- connectionParameters.add("Loose bbox", Boolean.toString(looseBBox));
- }
-
public void setLooseBBox(boolean looseBBox) {
connectionParameters.set("Loose bbox", Boolean.toString(looseBBox));
}
- protected void addPreparedStatements(boolean preparedStatements) {
- connectionParameters.add("preparedStatements", Boolean.toString(preparedStatements));
- }
-
public void setPreparedStatements(boolean preparedStatements) {
connectionParameters.set("preparedStatements", Boolean.toString(preparedStatements));
}
- protected void addMaxOpenPreparedStatements(int maxOpenPreparedStatements) {
- connectionParameters.add("Max open prepared statements", Integer.toString(maxOpenPreparedStatements));
- }
-
public void setMaxOpenPreparedStatements(int maxOpenPreparedStatements) {
connectionParameters.set("Max open prepared statements", Integer.toString(maxOpenPreparedStatements));
}
-
-}
\ No newline at end of file
+
+ /**
+ * @return {@value #TYPE}
+ */
+ String getValidType() {
+ return TYPE;
+ }
+}
diff --git a/src/test/java/it/geosolutions/geoserver/rest/publisher/GeoserverRESTPostgisDatastoreTest.java b/src/test/java/it/geosolutions/geoserver/rest/publisher/GeoserverRESTPostgisDatastoreTest.java
index 2bceb7b..2d76af5 100644
--- a/src/test/java/it/geosolutions/geoserver/rest/publisher/GeoserverRESTPostgisDatastoreTest.java
+++ b/src/test/java/it/geosolutions/geoserver/rest/publisher/GeoserverRESTPostgisDatastoreTest.java
@@ -28,7 +28,7 @@ package it.geosolutions.geoserver.rest.publisher;
import it.geosolutions.geoserver.rest.GeoserverRESTTest;
import it.geosolutions.geoserver.rest.decoder.RESTDataStore;
-import it.geosolutions.geoserver.rest.encoder.datastore.GSPostGISDatastoreEncoder;
+import it.geosolutions.geoserver.rest.encoder.GSPostGISDatastoreEncoder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;