Program: 137533
Project: 137533
Buggy source:
private void createSimpleRecordMatcher(List<Map<String,String>> matchRule) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
  final int recordSize=matchRule.size();
  double[] arrAttrWeights=new double[recordSize];
  String[] attributeNames=new String[recordSize];
  String[][] algorithmName=new String[recordSize][2];
  String[] arrMatchHandleNull=new String[recordSize];
  double recordMatchThreshold=acceptableThreshold;
  int recordIdx=0;
  for (  Map<String,String> recordMap : matchRule) {
    arrAttrWeights[recordIdx]=Double.parseDouble(recordMap.get(IRecordGrouping.CONFIDENCE_WEIGHT));
    attributeNames[recordIdx]=recordMap.get(IRecordGrouping.ATTRIBUTE_NAME);
    algorithmName[recordIdx][0]=recordMap.get(IRecordGrouping.MATCHING_TYPE);
    algorithmName[recordIdx][1]=recordMap.get(IRecordGrouping.CUSTOMER_MATCH_CLASS);
    arrMatchHandleNull[recordIdx]=recordMap.get(IRecordGrouping.HANDLE_NULL);
    String rcdMathThresholdEach=recordMap.get(IRecordGrouping.RECORD_MATCH_THRESHOLD);
    if (!StringUtils.isEmpty(rcdMathThresholdEach)) {
      recordMatchThreshold=Double.valueOf(rcdMathThresholdEach);
    }
    recordIdx++;
  }
  IAttributeMatcher[] attributeMatcher=new IAttributeMatcher[recordSize];
  for (int indx=0; indx < recordSize; indx++) {
    AttributeMatcherType attrMatcherType=AttributeMatcherType.valueOf(algorithmName[indx][0]);
    attributeMatcher[indx]=org.talend.dataquality.record.linkage.attribute.AttributeMatcherFactory.createMatcher(attrMatcherType,algorithmName[indx][1]);
    attributeMatcher[indx].setNullOption(arrMatchHandleNull[indx]);
    attributeMatcher[indx].setAttributeName(attributeNames[indx]);
  }
  IRecordMatcher simpleRecordMatcher=RecordMatcherFactory.createMatcher(RecordMatcherType.simpleVSRMatcher);
  simpleRecordMatcher.setRecordSize(recordSize);
  simpleRecordMatcher.setAttributeWeights(arrAttrWeights);
  simpleRecordMatcher.setAttributeMatchers(attributeMatcher);
  simpleRecordMatcher.setRecordMatchThreshold(recordMatchThreshold);
  combinedRecordMatcher.add(simpleRecordMatcher);
}

Fixed version (ground truth):
private void createSimpleRecordMatcher(List<Map<String,String>> matchRule) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
  final int recordSize=matchRule.size();
  double[] arrAttrWeights=new double[recordSize];
  String[] attributeNames=new String[recordSize];
  String[][] algorithmName=new String[recordSize][2];
  String[] arrMatchHandleNull=new String[recordSize];
  double recordMatchThreshold=acceptableThreshold;
  int recordIdx=0;
  for (  Map<String,String> recordMap : matchRule) {
    arrAttrWeights[recordIdx]=Double.parseDouble(recordMap.get(IRecordGrouping.CONFIDENCE_WEIGHT));
    attributeNames[recordIdx]=recordMap.get(IRecordGrouping.ATTRIBUTE_NAME);
    algorithmName[recordIdx][0]=recordMap.get(IRecordGrouping.MATCHING_TYPE);
    algorithmName[recordIdx][1]=recordMap.get(IRecordGrouping.CUSTOMER_MATCH_CLASS);
    arrMatchHandleNull[recordIdx]=recordMap.get(IRecordGrouping.HANDLE_NULL);
    String rcdMathThresholdEach=recordMap.get(IRecordGrouping.RECORD_MATCH_THRESHOLD);
    if (!StringUtils.isEmpty(rcdMathThresholdEach)) {
      recordMatchThreshold=Double.valueOf(rcdMathThresholdEach);
    }
    recordIdx++;
  }
  IAttributeMatcher[] attributeMatcher=new IAttributeMatcher[recordSize];
  for (int indx=0; indx < recordSize; indx++) {
    AttributeMatcherType attrMatcherType=AttributeMatcherType.get(algorithmName[indx][0]);
    attributeMatcher[indx]=org.talend.dataquality.record.linkage.attribute.AttributeMatcherFactory.createMatcher(attrMatcherType,algorithmName[indx][1]);
    attributeMatcher[indx].setNullOption(arrMatchHandleNull[indx]);
    attributeMatcher[indx].setAttributeName(attributeNames[indx]);
  }
  IRecordMatcher simpleRecordMatcher=RecordMatcherFactory.createMatcher(RecordMatcherType.simpleVSRMatcher);
  simpleRecordMatcher.setRecordSize(recordSize);
  simpleRecordMatcher.setAttributeWeights(arrAttrWeights);
  simpleRecordMatcher.setAttributeMatchers(attributeMatcher);
  simpleRecordMatcher.setRecordMatchThreshold(recordMatchThreshold);
  combinedRecordMatcher.add(simpleRecordMatcher);
}