Object url = source.getModuleHandle( ) .findResource( (String) propValue, IResourceLocator.LIBRARY ); propValue = url == null ? propValue : url.toString( ); }
if ( "org.eclipse.birt.report.data.oda.xml".equals( driverName ) && ( propName.equals( "FILELIST" ) || propName.equals( " " ) ) && propValue != null ) { Object url = source.getModuleHandle( ) .findResource( (String) propValue, IResourceLocator.LIBRARY ); propValue = url == null ? propValue : url.toString( ); } }
	IOdaDataSourceDesign newOdaDataSource( OdaDataSourceHandle source )			throws BirtException	{		OdaDataSourceDesign dteSource = new OdaDataSourceDesign( source				.getQualifiedName( ) );		IBaseDataSourceEventHandler eventHandler = new DataSourceScriptExecutor(				source, context );		dteSource.setEventHandler( eventHandler );		// Adapt base class properties		adaptBaseDataSource( source, dteSource );		// Adapt extended data source elements		// validate that a required attribute is specified		String driverName = source.getExtensionID( );		if ( driverName == null || driverName.length( ) == 0 )		{			throw new EngineException(					"Missing extenion id in data source definition, " + source.getName( ) ); //$NON-NLS-1$		}		dteSource.setExtensionID( driverName );		// static ROM properties defined by the ODA driver extension		Map staticProps = getExtensionProperties( source, source				.getExtensionPropertyDefinitionList( ) );		if ( staticProps != null && !staticProps.isEmpty( ) )		{			Iterator propNamesItr = staticProps.keySet( ).iterator( );			while ( propNamesItr.hasNext( ) )			{				String propName = ( String ) propNamesItr.next( );				assert ( propName != null );				String propValue;				// If property binding expression exists, use its evaluation				// result				String bindingExpr = source.getPropertyBinding( propName );				if ( needPropertyBinding( ) && bindingExpr != null						&& bindingExpr.length( ) > 0 )				{					propValue = evaluatePropertyBindingExpr( bindingExpr );				} else				{					propValue = ( String ) staticProps.get( propName );				}				/**				 * Here is a temp solution to adapt relative path to xml driver.				 * TODO Enhance me.				 */				if ( "org.eclipse.birt.report.data.oda.xml".equals( driverName )						&& ( propName.equals( "FILELIST" ) || propName.equals( " " ) )						&& propValue != null )				{					Object url = source.getModuleHandle( )							.findResource( (String) propValue,									IResourceLocator.LIBRARY );					propValue = url == null ? propValue : url.toString( );				}					dteSource.addPublicProperty( propName, propValue );			}		}		// private driver properties / private runtime data		Iterator elmtIter = source.privateDriverPropertiesIterator( );		if ( elmtIter != null )		{			while ( elmtIter.hasNext( ) )			{				ExtendedPropertyHandle modelProp = ( ExtendedPropertyHandle ) elmtIter						.next( );				dteSource.addPrivateProperty( modelProp.getName( ), modelProp						.getValue( ) );			}		}        addPropertyConfigurationId( dteSource );		return dteSource;	}