Program: 64373
Project: 64373
Buggy source:
public Object createSimpleXMLFormat(XRServiceAdapter xrService,Object value){
  XMLRoot xmlRoot=new XMLRoot();
  SimpleXMLFormat simpleXMLFormat=result.getSimpleXMLFormat();
  String tempSimpleXMLFormatTag=SimpleXMLFormat.DEFAULT_SIMPLE_XML_FORMAT_TAG;
  String simpleXMLFormatTag=simpleXMLFormat.getSimpleXMLFormatTag();
  if (simpleXMLFormatTag != null && !"String_Node_Str".equals(simpleXMLFormatTag)) {
    tempSimpleXMLFormatTag=simpleXMLFormatTag;
  }
  xmlRoot.setLocalName(tempSimpleXMLFormatTag);
  String tempXMLTag=DEFAULT_SIMPLE_XML_TAG;
  String xmlTag=simpleXMLFormat.getXMLTag();
  if (xmlTag != null && !"String_Node_Str".equals(xmlTag)) {
    tempXMLTag=xmlTag;
  }
  Vector<DatabaseRecord> records=null;
  if (value instanceof Vector) {
    records=(Vector<DatabaseRecord>)value;
  }
 else {
    records=new Vector<DatabaseRecord>();
    DatabaseRecord dr=new DatabaseRecord();
    dr.add(new DatabaseField(RESULT_STR),value);
    records.add(dr);
  }
  SimpleXMLFormatModel simpleXMLFormatModel=new SimpleXMLFormatModel();
  XMLConversionManager conversionManager=(XMLConversionManager)xrService.getOXSession().getDatasourcePlatform().getConversionManager();
  for (  DatabaseRecord dr : records) {
    Element rowElement=TEMP_DOC.createElement(tempXMLTag);
    for (    DatabaseField field : (Vector<DatabaseField>)dr.getFields()) {
      Object fieldValue=dr.get(field);
      if (fieldValue != null) {
        if (fieldValue instanceof Calendar) {
          Calendar cValue=(Calendar)fieldValue;
          fieldValue=conversionManager.convertObject(cValue,STRING,DATE_TIME_QNAME);
        }
        if (fieldValue instanceof Date) {
          Date dValue=(Date)fieldValue;
          fieldValue=conversionManager.convertObject(dValue,STRING,DATE_QNAME);
        }
 else         if (fieldValue instanceof Time) {
          Time tValue=(Time)fieldValue;
          fieldValue=conversionManager.convertObject(tValue,STRING,TIME_QNAME);
        }
 else         if (fieldValue instanceof Timestamp) {
          Timestamp tsValue=(Timestamp)fieldValue;
          fieldValue=conversionManager.convertObject(tsValue,STRING,DATE_TIME_QNAME);
        }
 else         if (fieldValue instanceof Blob) {
          fieldValue=conversionManager.convertObject((Blob)fieldValue,ClassConstants.APBYTE);
        }
 else         if (fieldValue.getClass().getName().equalsIgnoreCase(ORACLESQLXML_STR)) {
          try {
            Class oracleSQLXML=PrivilegedAccessHelper.getClassForName(ORACLESQLXML_STR,false,this.getClass().getClassLoader());
            Method getStringMethod=PrivilegedAccessHelper.getDeclaredMethod(oracleSQLXML,GETSTRING_METHOD,new Class[]{});
            fieldValue=(String)PrivilegedAccessHelper.invokeMethod(getStringMethod,fieldValue,new Object[]{});
          }
 catch (          Exception x) {
          }
        }
 else         if (fieldValue.getClass().getName().equalsIgnoreCase(ORACLEOPAQUE_STR)) {
          try {
            Class oracleOPAQUE=PrivilegedAccessHelper.getClassForName(ORACLEOPAQUE_STR,false,this.getClass().getClassLoader());
            Class xmlTypeFactoryClass=PrivilegedAccessHelper.getClassForName(XMLTYPEFACTORY_STR,true,this.getClass().getClassLoader());
            Constructor xmlTypeFactoryConstructor=PrivilegedAccessHelper.getConstructorFor(xmlTypeFactoryClass,new Class[0],true);
            Object xmlTypeFactory=PrivilegedAccessHelper.invokeConstructor(xmlTypeFactoryConstructor,new Object[0]);
            Method getStringMethod=PrivilegedAccessHelper.getDeclaredMethod(xmlTypeFactoryClass,GETSTRING_METHOD,new Class[]{oracleOPAQUE});
            fieldValue=(String)PrivilegedAccessHelper.invokeMethod(getStringMethod,xmlTypeFactory,new Object[]{fieldValue});
          }
 catch (          Exception x) {
          }
        }
        String elementName=sqlToXmlName(field.getName());
        if (elementName.equals(EMPTY_STRING)) {
          elementName=RESULT_STR;
        }
        Element columnElement=TEMP_DOC.createElement(elementName);
        rowElement.appendChild(columnElement);
        String fieldValueString=fieldValue.toString();
        if (result.getType().equals(BASE_64_BINARY_QNAME)) {
          fieldValueString=Helper.buildHexStringFromBytes(Base64.base64Encode((byte[])fieldValue));
          columnElement.setAttributeNS(XMLNS_ATTRIBUTE_NS_URI,"String_Node_Str",W3C_XML_SCHEMA_NS_URI);
          columnElement.setAttributeNS(XMLNS_ATTRIBUTE_NS_URI,"String_Node_Str",W3C_XML_SCHEMA_INSTANCE_NS_URI);
          columnElement.setAttributeNS(W3C_XML_SCHEMA_INSTANCE_NS_URI,"String_Node_Str","String_Node_Str");
        }
        columnElement.appendChild(TEMP_DOC.createTextNode(fieldValueString));
      }
    }
    simpleXMLFormatModel.simpleXML.add(rowElement);
  }
  xmlRoot.setObject(simpleXMLFormatModel);
  return xmlRoot;
}

Fixed version (ground truth):
public Object createSimpleXMLFormat(XRServiceAdapter xrService,Object value){
  XMLRoot xmlRoot=new XMLRoot();
  SimpleXMLFormat simpleXMLFormat=result.getSimpleXMLFormat();
  String tempSimpleXMLFormatTag=SimpleXMLFormat.DEFAULT_SIMPLE_XML_FORMAT_TAG;
  String simpleXMLFormatTag=simpleXMLFormat.getSimpleXMLFormatTag();
  if (simpleXMLFormatTag != null && !"String_Node_Str".equals(simpleXMLFormatTag)) {
    tempSimpleXMLFormatTag=simpleXMLFormatTag;
  }
  xmlRoot.setLocalName(tempSimpleXMLFormatTag);
  String tempXMLTag=DEFAULT_SIMPLE_XML_TAG;
  String xmlTag=simpleXMLFormat.getXMLTag();
  if (xmlTag != null && !"String_Node_Str".equals(xmlTag)) {
    tempXMLTag=xmlTag;
  }
  Vector<DatabaseRecord> records=null;
  if (value instanceof Vector) {
    records=(Vector<DatabaseRecord>)value;
  }
 else {
    records=new Vector<DatabaseRecord>();
    DatabaseRecord dr=new DatabaseRecord();
    dr.add(new DatabaseField(RESULT_STR),value);
    records.add(dr);
  }
  SimpleXMLFormatModel simpleXMLFormatModel=new SimpleXMLFormatModel();
  XMLConversionManager conversionManager=(XMLConversionManager)xrService.getOXSession().getDatasourcePlatform().getConversionManager();
  for (  DatabaseRecord dr : records) {
    Element rowElement=TEMP_DOC.createElement(tempXMLTag);
    for (    DatabaseField field : (Vector<DatabaseField>)dr.getFields()) {
      Object fieldValue=dr.get(field);
      if (fieldValue != null) {
        if (fieldValue instanceof Calendar) {
          Calendar cValue=(Calendar)fieldValue;
          fieldValue=conversionManager.convertObject(cValue,STRING,DATE_TIME_QNAME);
        }
        if (fieldValue instanceof Date) {
          Date dValue=(Date)fieldValue;
          fieldValue=conversionManager.convertObject(dValue,STRING,DATE_QNAME);
        }
 else         if (fieldValue instanceof Time) {
          Time tValue=(Time)fieldValue;
          fieldValue=conversionManager.convertObject(tValue,STRING,TIME_QNAME);
        }
 else         if (fieldValue instanceof Timestamp) {
          Timestamp tsValue=(Timestamp)fieldValue;
          fieldValue=conversionManager.convertObject(tsValue,STRING,DATE_TIME_QNAME);
        }
 else         if (fieldValue instanceof Blob) {
          fieldValue=conversionManager.convertObject((Blob)fieldValue,ClassConstants.APBYTE);
        }
 else         if (fieldValue.getClass().getName().equalsIgnoreCase(ORACLESQLXML_STR)) {
          try {
            Class oracleSQLXML;
            Method getStringMethod;
            if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
              oracleSQLXML=AccessController.doPrivileged(new PrivilegedClassForName(ORACLESQLXML_STR,true,this.getClass().getClassLoader()));
              getStringMethod=AccessController.doPrivileged(new PrivilegedGetDeclaredMethod(oracleSQLXML,GETSTRING_METHOD,new Class[]{}));
              fieldValue=(String)AccessController.doPrivileged(new PrivilegedMethodInvoker(getStringMethod,fieldValue,new Object[]{}));
            }
 else {
              oracleSQLXML=PrivilegedAccessHelper.getClassForName(ORACLESQLXML_STR,true,this.getClass().getClassLoader());
              getStringMethod=PrivilegedAccessHelper.getDeclaredMethod(oracleSQLXML,GETSTRING_METHOD,new Class[]{});
              fieldValue=(String)PrivilegedAccessHelper.invokeMethod(getStringMethod,fieldValue,new Object[]{});
            }
          }
 catch (          Exception x) {
          }
        }
 else         if (fieldValue.getClass().getName().equalsIgnoreCase(ORACLEOPAQUE_STR)) {
          try {
            Class oracleOPAQUE;
            Class xmlTypeFactoryClass;
            Constructor xmlTypeFactoryConstructor;
            Object xmlTypeFactory;
            Method getStringMethod;
            if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
              oracleOPAQUE=AccessController.doPrivileged(new PrivilegedClassForName(ORACLEOPAQUE_STR,true,this.getClass().getClassLoader()));
              xmlTypeFactoryClass=AccessController.doPrivileged(new PrivilegedClassForName(XMLTYPEFACTORY_STR,true,this.getClass().getClassLoader()));
              xmlTypeFactoryConstructor=AccessController.doPrivileged(new PrivilegedGetConstructorFor(xmlTypeFactoryClass,new Class[0],true));
              xmlTypeFactory=AccessController.doPrivileged(new PrivilegedInvokeConstructor(xmlTypeFactoryConstructor,new Object[0]));
              getStringMethod=AccessController.doPrivileged(new PrivilegedGetDeclaredMethod(xmlTypeFactoryClass,GETSTRING_METHOD,new Class[]{oracleOPAQUE}));
              fieldValue=(String)AccessController.doPrivileged(new PrivilegedMethodInvoker(getStringMethod,fieldValue,new Object[]{}));
            }
 else {
              oracleOPAQUE=PrivilegedAccessHelper.getClassForName(ORACLEOPAQUE_STR,false,this.getClass().getClassLoader());
              xmlTypeFactoryClass=PrivilegedAccessHelper.getClassForName(XMLTYPEFACTORY_STR,true,this.getClass().getClassLoader());
              xmlTypeFactoryConstructor=PrivilegedAccessHelper.getConstructorFor(xmlTypeFactoryClass,new Class[0],true);
              xmlTypeFactory=PrivilegedAccessHelper.invokeConstructor(xmlTypeFactoryConstructor,new Object[0]);
              getStringMethod=PrivilegedAccessHelper.getDeclaredMethod(xmlTypeFactoryClass,GETSTRING_METHOD,new Class[]{oracleOPAQUE});
              fieldValue=(String)PrivilegedAccessHelper.invokeMethod(getStringMethod,xmlTypeFactory,new Object[]{fieldValue});
            }
          }
 catch (          Exception x) {
          }
        }
        String elementName=sqlToXmlName(field.getName());
        if (elementName.equals(EMPTY_STRING)) {
          elementName=RESULT_STR;
        }
        Element columnElement=TEMP_DOC.createElement(elementName);
        rowElement.appendChild(columnElement);
        String fieldValueString=fieldValue.toString();
        if (result.getType().equals(BASE_64_BINARY_QNAME)) {
          fieldValueString=Helper.buildHexStringFromBytes(Base64.base64Encode((byte[])fieldValue));
          columnElement.setAttributeNS(XMLNS_ATTRIBUTE_NS_URI,"String_Node_Str",W3C_XML_SCHEMA_NS_URI);
          columnElement.setAttributeNS(XMLNS_ATTRIBUTE_NS_URI,"String_Node_Str",W3C_XML_SCHEMA_INSTANCE_NS_URI);
          columnElement.setAttributeNS(W3C_XML_SCHEMA_INSTANCE_NS_URI,"String_Node_Str","String_Node_Str");
        }
        columnElement.appendChild(TEMP_DOC.createTextNode(fieldValueString));
      }
    }
    simpleXMLFormatModel.simpleXML.add(rowElement);
  }
  xmlRoot.setObject(simpleXMLFormatModel);
  return xmlRoot;
}