Program: 66677
Project: 66677
Buggy source:
/** 
 * Creates adaptor based on Model OdaDataSourceHandle.
 * @param source model handle
 * @param propBindingScope Javascript scope in which to evaluate property bindings. If null,property bindings are not evaluated.
 */
public OdaDataSourceAdapter(OdaDataSourceHandle source,Scriptable propBindingScope,DataEngineContext dtCotnext,ModelAdapter adapter) throws BirtException {
  super(source.getQualifiedName());
  bindingScope=propBindingScope;
  DataAdapterUtil.adaptBaseDataSource(source,this);
  String driverName=source.getExtensionID();
  if (driverName == null || driverName.length() == 0) {
    throw new AdapterException(ResourceConstants.DATASOURCE_EXID_ERROR,source.getName());
  }
  setExtensionID(driverName);
  Map staticProps=DataAdapterUtil.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_Node_Str";
      Expression expression=source.getPropertyBindingExpression(propName);
      org.eclipse.birt.data.engine.api.querydefn.ScriptExpression script=adapter.adaptExpression(expression);
      if (bindingScope != null && script != null && DataSessionContext.MODE_UPDATE != dtCotnext.getMode()) {
        Object value=JavascriptEvalUtil.evaluateScript(null,bindingScope,script.getText(),ScriptExpression.defaultID,0);
        propValue=(value == null ? null : value.toString());
      }
 else {
        propValue=(String)staticProps.get(propName);
      }
      addPublicProperty(propName,propValue);
    }
  }
  Iterator elmtIter=source.privateDriverPropertiesIterator();
  if (elmtIter != null) {
    while (elmtIter.hasNext()) {
      ExtendedPropertyHandle modelProp=(ExtendedPropertyHandle)elmtIter.next();
      addPrivateProperty(modelProp.getName(),modelProp.getValue());
    }
  }
  addPropertyConfigurationId(this,source);
}

Fixed version (ground truth):
/** 
 * Creates adaptor based on Model OdaDataSourceHandle.
 * @param source model handle
 * @param propBindingScope Javascript scope in which to evaluate property bindings. If null,property bindings are not evaluated.
 */
public OdaDataSourceAdapter(OdaDataSourceHandle source,Scriptable propBindingScope,DataEngineContext dtCotnext,ModelAdapter adapter) throws BirtException {
  super(source.getQualifiedName());
  DataAdapterUtil.adaptBaseDataSource(source,this);
  String driverName=source.getExtensionID();
  if (driverName == null || driverName.length() == 0) {
    throw new AdapterException(ResourceConstants.DATASOURCE_EXID_ERROR,source.getName());
  }
  setExtensionID(driverName);
  Map staticProps=DataAdapterUtil.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_Node_Str";
      Expression expression=source.getPropertyBindingExpression(propName);
      org.eclipse.birt.data.engine.api.querydefn.ScriptExpression script=adapter.adaptExpression(expression);
      if (propBindingScope != null && script != null && DataSessionContext.MODE_UPDATE != dtCotnext.getMode()) {
        Object value=JavascriptEvalUtil.evaluateScript(null,propBindingScope,script.getText(),ScriptExpression.defaultID,0);
        propValue=(value == null ? null : value.toString());
      }
 else {
        propValue=(String)staticProps.get(propName);
      }
      addPublicProperty(propName,propValue);
    }
  }
  Iterator elmtIter=source.privateDriverPropertiesIterator();
  if (elmtIter != null) {
    while (elmtIter.hasNext()) {
      ExtendedPropertyHandle modelProp=(ExtendedPropertyHandle)elmtIter.next();
      addPrivateProperty(modelProp.getName(),modelProp.getValue());
    }
  }
  addPropertyConfigurationId(this,source);
}