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..5c21a4b 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 @@ -120,6 +122,10 @@ public class GSOracleNGDatastoreEncoder extends GSAbstractDatastoreEncoder { public void setPassword(String password) { 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..803e6a2 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,31 @@ 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 )