Program: 77196
Project: 77196
Buggy source:
IOdaDataSourceDesign newOdaDataSource(OdaDataSourceHandle source) throws BirtException {
  OdaDataSourceDesign dteSource=new OdaDataSourceDesign(source.getQualifiedName());
  IBaseDataSourceEventHandler eventHandler=new DataSourceScriptExecutor(source,context);
  dteSource.setEventHandler(eventHandler);
  adaptBaseDataSource(source,dteSource);
  String driverName=source.getExtensionID();
  if (driverName == null || driverName.length() == 0) {
    throw new EngineException("String_Node_Str" + source.getName());
  }
  dteSource.setExtensionID(driverName);
  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;
      String bindingExpr=source.getPropertyBinding(propName);
      if (needPropertyBinding() && bindingExpr != null && bindingExpr.length() > 0) {
        propValue=evaluatePropertyBindingExpr(bindingExpr);
      }
 else {
        propValue=(String)staticProps.get(propName);
      }
      if (this.context != null && (this.context.getDataEngine() instanceof DataGenerationEngine || this.context.getEngine() instanceof DteDataEngine)) {
        if ("String_Node_Str".equals(driverName) && (propName.equals("String_Node_Str") || propName.equals("String_Node_Str")) && propValue != null) {
          Object url=source.getModuleHandle().findResource((String)propValue,IResourceLocator.LIBRARY);
          propValue=url == null ? propValue : url.toString();
        }
      }
      dteSource.addPublicProperty(propName,propValue);
    }
  }
  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;
}

Fixed version (ground truth):
IOdaDataSourceDesign newOdaDataSource(OdaDataSourceHandle source) throws BirtException {
  OdaDataSourceDesign dteSource=new OdaDataSourceDesign(source.getQualifiedName());
  IBaseDataSourceEventHandler eventHandler=new DataSourceScriptExecutor(source,context);
  dteSource.setEventHandler(eventHandler);
  adaptBaseDataSource(source,dteSource);
  String driverName=source.getExtensionID();
  if (driverName == null || driverName.length() == 0) {
    throw new EngineException("String_Node_Str" + source.getName());
  }
  dteSource.setExtensionID(driverName);
  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;
      String bindingExpr=source.getPropertyBinding(propName);
      if (needPropertyBinding() && bindingExpr != null && bindingExpr.length() > 0) {
        propValue=evaluatePropertyBindingExpr(bindingExpr);
      }
 else {
        propValue=(String)staticProps.get(propName);
      }
      if (this.context != null && (this.context.getDataEngine() instanceof DataGenerationEngine || this.context.getDataEngine() instanceof DteDataEngine)) {
        if ("String_Node_Str".equals(driverName) && (propName.equals("String_Node_Str") || propName.equals("String_Node_Str")) && propValue != null) {
          Object url=source.getModuleHandle().findResource((String)propValue,IResourceLocator.LIBRARY);
          propValue=url == null ? propValue : url.toString();
        }
      }
      dteSource.addPublicProperty(propName,propValue);
    }
  }
  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;
}