From 695877041ac109b9bee27886ed0788ff0c341d89 Mon Sep 17 00:00:00 2001 From: eblondel Date: Thu, 2 May 2013 20:15:24 +0200 Subject: [PATCH] #71 - 1.5.x - GSOracleNGDatastoreEncoder fix & tests (backport) --- .../datastore/GSOracleNGDatastoreEncoder.java | 7 ++++ .../rest/datastore/StoreIntegrationTest.java | 34 +++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/src/main/java/it/geosolutions/geoserver/rest/encoder/datastore/GSOracleNGDatastoreEncoder.java b/src/main/java/it/geosolutions/geoserver/rest/encoder/datastore/GSOracleNGDatastoreEncoder.java index 2cc3f27..b4c53fc 100644 --- a/src/main/java/it/geosolutions/geoserver/rest/encoder/datastore/GSOracleNGDatastoreEncoder.java +++ b/src/main/java/it/geosolutions/geoserver/rest/encoder/datastore/GSOracleNGDatastoreEncoder.java @@ -36,6 +36,7 @@ public class GSOracleNGDatastoreEncoder extends GSAbstractDatastoreEncoder { static final String TYPE = "Oracle NG"; + static final String DEFAULT_DB_TYPE = "oracle"; static final int DEFAULT_MIN_CONNECTIONS = 1; static final int DEFAULT_MAX_CONNECTIONS = 10; static final int DEFAULT_FETCH_SIZE = 1000; @@ -68,6 +69,7 @@ public class GSOracleNGDatastoreEncoder extends GSAbstractDatastoreEncoder { // Set mandatory parameter setType(TYPE); + setDatabaseType(DEFAULT_DB_TYPE); setDatabase(database); // Set default values @@ -121,6 +123,11 @@ public class GSOracleNGDatastoreEncoder extends GSAbstractDatastoreEncoder { connectionParameters.set("passwd", password); } + + public void setDatabaseType(String dbtype) { + connectionParameters.set("dbtype", dbtype); + } + public void setJndiReferenceName(String jndiReferenceName) { connectionParameters.set("jndiReferenceName", jndiReferenceName); } diff --git a/src/test/java/it/geosolutions/geoserver/rest/datastore/StoreIntegrationTest.java b/src/test/java/it/geosolutions/geoserver/rest/datastore/StoreIntegrationTest.java index fab7cb7..00d136b 100644 --- a/src/test/java/it/geosolutions/geoserver/rest/datastore/StoreIntegrationTest.java +++ b/src/test/java/it/geosolutions/geoserver/rest/datastore/StoreIntegrationTest.java @@ -29,8 +29,10 @@ import java.net.MalformedURLException; import it.geosolutions.geoserver.rest.GeoserverRESTTest; import it.geosolutions.geoserver.rest.decoder.RESTDataStore; import it.geosolutions.geoserver.rest.encoder.GSAbstractStoreEncoder; +import it.geosolutions.geoserver.rest.encoder.GSLayerEncoder; import it.geosolutions.geoserver.rest.encoder.datastore.GSAbstractDatastoreEncoder; import it.geosolutions.geoserver.rest.encoder.datastore.GSOracleNGDatastoreEncoder; +import it.geosolutions.geoserver.rest.encoder.feature.GSFeatureTypeEncoder; import it.geosolutions.geoserver.rest.manager.GeoServerRESTStoreManager; import org.junit.Before; @@ -41,8 +43,14 @@ import org.slf4j.LoggerFactory; /** *

* Since these tests require a running Store instance, this is more like integration tests.
+ * + * For testing that a datastore is properly configured, a layer publication has + * to be attempted. For this, the 'states' data (states shapefile - available in + * testdata/states.zip) has to be imported in the corresponding store. + * Note: For Oracle NG this name has to be uppercase (STATES). * * @author carlo cancellieri - GeoSolutions + * @author emmanuel blondel * * @see GeoserverRESTTest */ @@ -102,6 +110,32 @@ public abstract class StoreIntegrationTest extends GeoserverRESTTest { assertNotNull(datastore); LOGGER.info("The type of the created datastore is: " + datastore.getStoreType()); + // check if the datastore is properly configured in GS for publishing layers + String layername = "states"; + if (storeEncoder instanceof GSOracleNGDatastoreEncoder) + layername = layername.toUpperCase(); + + GSFeatureTypeEncoder fte = new GSFeatureTypeEncoder(); + fte.setName(layername); + fte.setTitle(layername); + fte.setNativeCRS("EPSG:4326"); + fte.setDescription("desc"); + fte.setEnabled(true); + GSLayerEncoder layerEncoder = new GSLayerEncoder(); + layerEncoder.setEnabled(true); + layerEncoder.setQueryable(true); + layerEncoder.setDefaultStyle("polygon"); + + boolean published = publisher.publishDBLayer(DEFAULT_WS, storeName, + fte, layerEncoder); + if (!ignore) { + assertTrue("Test layer not published", published); + } else if (!published) { + LOGGER.error("*** Test layer " + + layername + + " has not been published. Problem in datastore configuration"); + } + // removing test boolean removed = storeManager.remove(DEFAULT_WS, storeEncoder, true); if( ! ignore )