@Override protected DataSource resolveDatabaseConnection( IDatabaseConnection databaseConnection ) throws DBDatasourceServiceException { return PooledDatasourceHelper.convert( databaseConnection ); }
protected DataSource getJndiDataSource( final String dsName ) throws DBDatasourceServiceException { return PooledDatasourceHelper.getJndiDataSource( dsName ); }
@Override protected DataSource resolveDatabaseConnection( IDatabaseConnection databaseConnection ) throws DBDatasourceServiceException { return PooledDatasourceHelper.setupPooledDataSource( databaseConnection ); }
@Override protected DataSource getDataSource( IDatabaseConnection connection ) { DataSource ds = null; try { if (!connection.getAccessType().equals( DatabaseAccessType.JNDI ) ) { ds = PooledDatasourceHelper.setupPooledDataSource( connection ); } else { ds = PooledDatasourceHelper.getJndiDataSource( connection.getDatabaseName() ); } } catch ( DBDatasourceServiceException e ) { Logger.error( this, Messages.getInstance().getErrorString( "DatasourceSystemListener.ERROR_0003_UNABLE_TO_POOL_DATASOURCE", connection.getName(), e.getMessage() ) ); //$NON-NLS-1$ } return ds; }
@Test public void testConnectionFactory_MicrosoftSQL() { IDatabaseConnection connection = mock( IDatabaseConnection.class ); doReturn( StringEscapeUtils.escapeHtml( user ) ).when( connection ).getUsername(); doReturn( StringEscapeUtils.escapeHtml( password ) ).when( connection ).getPassword(); ConnectionFactory factory = PooledDatasourceHelper.getConnectionFactory( connection, "jdbc:microsoft:sqlserver://localhost" ); Properties props = (Properties) Whitebox.getInternalState( factory, "_props" ); assertEquals( user, props.getProperty( "user" ) ); assertEquals( password, props.getProperty( "password" ) ); }
PooledDatasourceHelper pooledDatasourceHelper = new PooledDatasourceHelper(); dataSource = pooledDatasourceHelper.getJndiDataSource( this.getDatabaseName() ); } catch ( DBDatasourceServiceException e ) { logger.error( e.getMessage(), e );
databaseConnection.getAttributes().get( GenericDatabaseDialect.ATTRIBUTE_CUSTOM_DRIVER_CLASS ); if ( !StringUtils.isEmpty( driverClassName ) ) { initDriverClass( basicDatasource, dialect, driverClassName, databaseConnection.getName() ); } else { initDriverClass( basicDatasource, dialect, dialect.getNativeDriver(), databaseConnection.getName() ); } else {
@Test public void testConnectionFactory_MariaDB() { IDatabaseConnection connection = mock( IDatabaseConnection.class ); doReturn( StringEscapeUtils.escapeHtml( user ) ).when( connection ).getUsername(); doReturn( StringEscapeUtils.escapeHtml( password ) ).when( connection ).getPassword(); ConnectionFactory factory = PooledDatasourceHelper.getConnectionFactory( connection, "jdbc:mariadb://localhost" ); Properties props = (Properties) Whitebox.getInternalState( factory, "_props" ); assertEquals( user, props.getProperty( "user" ) ); assertEquals( password, props.getProperty( "password" ) ); }
@Override protected DataSource resolveDatabaseConnection( IDatabaseConnection databaseConnection ) throws DBDatasourceServiceException { return PooledDatasourceHelper.convert( databaseConnection ); }
@Override protected DataSource resolveDatabaseConnection( IDatabaseConnection databaseConnection ) throws DBDatasourceServiceException { return PooledDatasourceHelper.setupPooledDataSource( databaseConnection ); } }
@Test public void testConnectionFactory_MySQL() { IDatabaseConnection connection = mock( IDatabaseConnection.class ); doReturn( StringEscapeUtils.escapeHtml( user ) ).when( connection ).getUsername(); doReturn( StringEscapeUtils.escapeHtml( password ) ).when( connection ).getPassword(); ConnectionFactory factory = PooledDatasourceHelper.getConnectionFactory( connection, "jdbc:mysql://localhost" ); Properties props = (Properties) Whitebox.getInternalState( factory, "_props" ); assertEquals( user, props.getProperty( "user" ) ); assertEquals( password, props.getProperty( "password" ) ); }
protected DataSource getDataSource( IDatabaseConnection connection ) throws DBDatasourceServiceException { return PooledDatasourceHelper.convert( connection ); }
@Test public void testSetupPooledDataSourceForJNDI() { try { IDatabaseConnection databaseConnection = mock( IDatabaseConnection.class ); when( databaseConnection.getAccessType() ).thenReturn( DatabaseAccessType.JNDI ); PooledDatasourceHelper.setupPooledDataSource( databaseConnection ); fail( "Expecting the exception to be thrown" ); } catch ( DBDatasourceServiceException ex ) { assertNotNull( ex ); } }
ConnectionFactory factory = getConnectionFactory( databaseConnection, url );
public static DataSource convert( IDatabaseConnection databaseConnection ) throws DBDatasourceServiceException { return convert( databaseConnection, () -> PentahoSystem.get( IDatabaseDialectService.class, PentahoSessionHolder.getSession() ) ); }
@Test public void testCreatePoolNoDialect() throws Exception { DatabaseDialectService dialectService = new DatabaseDialectService( false ); mp = new MicroPlatform( SOLUTION_PATH ); mp.defineInstance( IDatabaseDialectService.class, dialectService ); mp.start(); final DatabaseConnection con = new DatabaseConnection(); con.setId( "Postgres" ); con.setName( "Postgres" ); con.setAccessType( DatabaseAccessType.NATIVE ); con.setUsername( "pentaho_user" ); con.setPassword( "password" ); final HashMap<String, String> attrs = new HashMap<>(); attrs.put( DatabaseConnection.ATTRIBUTE_CUSTOM_DRIVER_CLASS, "" ); attrs.put( DatabaseConnection.ATTRIBUTE_CUSTOM_URL, "jdbc:postgresql://localhost:5432/hibernate" ); con.setAttributes( attrs ); try { PooledDatasourceHelper.setupPooledDataSource( con ); fail( "Expecting the exception to be thrown" ); } catch ( DBDatasourceServiceException ex ) { assertNotNull( ex ); } }
@Test( expected = DriverNotInitializedException.class ) public void testDriverNotInitialized() throws DBDatasourceServiceException { when( dialectService.getDialect( connection ) ).thenReturn( driverLocatorDialect ); when( ( (IDriverLocator) driverLocatorDialect ).initialize( nativeDriverName ) ).thenReturn( false ); PooledDatasourceHelper.convert( connection, () -> dialectService ); }
@Test public void testCreatePoolNoDialectService() throws Exception { DatabaseDialectService dialectService = new DatabaseDialectService( false ); final DatabaseTypeHelper databaseTypeHelper = new DatabaseTypeHelper( dialectService.getDatabaseTypes() ); final DatabaseConnection con = new DatabaseConnection(); con.setId( "Postgres" ); con.setName( "Postgres" ); con.setAccessType( DatabaseAccessType.NATIVE ); con.setDatabaseType( databaseTypeHelper.getDatabaseTypeByShortName( "GENERIC" ) ); con.setUsername( "pentaho_user" ); con.setPassword( "password" ); final HashMap<String, String> attrs = new HashMap<>(); attrs.put( DatabaseConnection.ATTRIBUTE_CUSTOM_DRIVER_CLASS, "org.postgresql.Driver" ); attrs.put( DatabaseConnection.ATTRIBUTE_CUSTOM_URL, "jdbc:postgresql://localhost:5432/hibernate" ); con.setAttributes( attrs ); try { PooledDatasourceHelper.setupPooledDataSource( con ); fail( "Expecting the exception to be thrown" ); } catch ( DBDatasourceServiceException ex ) { assertNotNull( ex ); } }
@Test public void testSuccessfulDriverInitInConvertNonGeneric() throws DBDatasourceServiceException { when( ( (IDriverLocator) driverLocatorDialect ).initialize( nativeDriverName ) ).thenReturn( true ); PooledDatasourceHelper.convert( connection, () -> dialectService ); verify( ( (IDriverLocator) driverLocatorDialect ), times( 1 ) ).initialize( nativeDriverName ); }
@Test public void testCreatePoolNoClassName() throws Exception { DatabaseDialectService dialectService = new DatabaseDialectService( false ); final DatabaseTypeHelper databaseTypeHelper = new DatabaseTypeHelper( dialectService.getDatabaseTypes() ); mp = new MicroPlatform( SOLUTION_PATH ); mp.defineInstance( IDatabaseDialectService.class, dialectService ); mp.start(); final DatabaseConnection con = new DatabaseConnection(); con.setId( "Postgres" ); con.setName( "Postgres" ); con.setAccessType( DatabaseAccessType.NATIVE ); con.setDatabaseType( databaseTypeHelper.getDatabaseTypeByShortName( "GENERIC" ) ); con.setUsername( "pentaho_user" ); con.setPassword( "password" ); final HashMap<String, String> attrs = new HashMap<>(); attrs.put( DatabaseConnection.ATTRIBUTE_CUSTOM_DRIVER_CLASS, "" ); attrs.put( DatabaseConnection.ATTRIBUTE_CUSTOM_URL, "jdbc:postgresql://localhost:5432/hibernate" ); con.setAttributes( attrs ); try { PooledDatasourceHelper.setupPooledDataSource( con ); fail( "Expecting the exception to be thrown" ); } catch ( DBDatasourceServiceException ex ) { assertNotNull( ex ); } }