PreparedOdaDSQuery self = PreparedOdaDSQuery.this; return DataSourceFactory.getFactory( ) .getDataSource( driverName, driverProps, this.dataSource.getDesign( ), this.dataSet.getDesign( ), self.queryDefn.getInputParamBindings( ), DataSetCacheUtil.getCacheOption( self.dataEngine.getContext( ), appContext ), self.dataEngine.getContext( ).getCacheCount( ) );
return getDataSource( driverName, driverProps );
		protected IDataSource createOdiDataSource( ) throws DataException		{			OdaDataSourceRuntime extDS = (OdaDataSourceRuntime) dataSource;			assert extDS != null;			// Obtains an odi data source matching the dynamic definition			// of the extended data source		    String driverName = extDS.getExtensionID();		    if ( driverName == null || driverName.length() == 0 )		        throw new DataException( ResourceConstants.MISSING_DATASOURCE_EXT_ID,		        		extDS.getName( ) );		    		    // merge public and private driver properties into a single Map		    Map driverProps = 		        copyProperties( extDS.getPublicProperties(), 		        		extDS.getPrivateProperties() );		    	    		    // calls ODI Data Source Factory to provide an ODI data source			// object that matches the given properties		    PreparedOdaDSQuery self = PreparedOdaDSQuery.this;			return DataSourceFactory.getFactory( )					.getDataSource( driverName,							driverProps,							this.dataSource.getDesign( ),							this.dataSet.getDesign( ),							self.queryDefn.getInputParamBindings( ),							DataSetCacheUtil.getCacheOption( self.dataEngine.getContext( ),									appContext ),							self.dataEngine.getContext( ).getCacheCount( ) );		}