Merge pull request #72 from eblondel/master-71-OracleNGDatastore-fix

#71 master - fix GSOracleNGDatastoreEncoder (missing dbType)
This commit is contained in:
mbarto 2013-05-02 10:31:56 -07:00
commit 37987049e5
2 changed files with 40 additions and 1 deletions

View File

@ -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);

View File

@ -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;
/**
* <P>
* Since these tests require a running Store instance, this is more like integration tests.<br/>
*
*
* 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 )