Program: 89384
Project: 89384
Buggy source:
/** 
 * Writes an audit trail entry to the given writer
 * @param writer The writer to write to
 * @param entry The entry to write
 * @param reportFormat The format to write the header in
 * @throws IOException
 */
private void writeAuditTrailEntry(Writer writer,RecordsManagementAuditEntry entry,ReportFormat reportFormat) throws IOException {
  if (writer == null) {
    return;
  }
  if (reportFormat == ReportFormat.HTML) {
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write(StringEscapeUtils.escapeHtml(entry.getTimestamp().toString()));
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write(entry.getFullName() != null ? StringEscapeUtils.escapeHtml(entry.getFullName()) : StringEscapeUtils.escapeHtml(entry.getUserName()));
    writer.write("String_Node_Str");
    if (entry.getUserRole() != null && entry.getUserRole().length() > 0) {
      writer.write("String_Node_Str");
      writer.write("String_Node_Str");
      writer.write(StringEscapeUtils.escapeHtml(entry.getUserRole()));
      writer.write("String_Node_Str");
    }
    if (entry.getEvent() != null && entry.getEvent().length() > 0) {
      writer.write("String_Node_Str");
      writer.write("String_Node_Str");
      writer.write(StringEscapeUtils.escapeHtml(getAuditEventLabel(entry.getEvent())));
      writer.write("String_Node_Str");
    }
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    if (entry.getIdentifier() != null && entry.getIdentifier().length() > 0) {
      writer.write("String_Node_Str");
      writer.write("String_Node_Str");
      writer.write(StringEscapeUtils.escapeHtml(entry.getIdentifier()));
      writer.write("String_Node_Str");
    }
    if (entry.getNodeType() != null && entry.getNodeType().length() > 0) {
      writer.write("String_Node_Str");
      writer.write("String_Node_Str");
      writer.write(StringEscapeUtils.escapeHtml(entry.getNodeType()));
      writer.write("String_Node_Str");
    }
    if (entry.getPath() != null && entry.getPath().length() > 0) {
      String path=entry.getPath();
      String displayPath=path;
      int idx=path.indexOf("String_Node_Str",1);
      if (idx != -1) {
        displayPath="String_Node_Str" + path.substring(idx);
      }
      writer.write("String_Node_Str");
      writer.write("String_Node_Str");
      writer.write(StringEscapeUtils.escapeHtml(displayPath));
      writer.write("String_Node_Str");
    }
    writer.write("String_Node_Str");
    if (entry.getChangedProperties() != null) {
      writer.write("String_Node_Str");
      writer.write("String_Node_Str");
      for (      QName valueName : entry.getChangedProperties().keySet()) {
        Pair<Serializable,Serializable> values=entry.getChangedProperties().get(valueName);
        writer.write("String_Node_Str");
        writer.write(getPropertyLabel(valueName));
        writer.write("String_Node_Str");
        Serializable oldValue=values.getFirst();
        writer.write(oldValue == null ? "String_Node_Str" : StringEscapeUtils.escapeHtml(oldValue.toString()));
        writer.write("String_Node_Str");
        Serializable newValue=values.getSecond();
        writer.write(newValue == null ? "String_Node_Str" : StringEscapeUtils.escapeHtml(newValue.toString()));
        writer.write("String_Node_Str");
      }
      writer.write("String_Node_Str");
    }
    writer.write("String_Node_Str");
  }
 else {
    try {
      JSONObject json=new JSONObject();
      json.put("String_Node_Str",entry.getTimestampString());
      json.put("String_Node_Str",entry.getUserName());
      json.put("String_Node_Str",entry.getUserRole() == null ? "String_Node_Str" : entry.getUserRole());
      json.put("String_Node_Str",entry.getFullName() == null ? "String_Node_Str" : entry.getFullName());
      json.put("String_Node_Str",entry.getNodeRef() == null ? "String_Node_Str" : entry.getNodeRef());
      if (entry.getEvent().equals("String_Node_Str") == true && entry.getNodeRef() != null) {
        NodeRef nodeRef=entry.getNodeRef();
        String userName=(String)nodeService.getProperty(nodeRef,ContentModel.PROP_USERNAME);
        json.put("String_Node_Str",userName == null ? "String_Node_Str" : userName);
      }
 else {
        json.put("String_Node_Str",entry.getNodeName() == null ? "String_Node_Str" : entry.getNodeName());
      }
      json.put("String_Node_Str",entry.getNodeType() == null ? "String_Node_Str" : entry.getNodeType());
      json.put("String_Node_Str",entry.getEvent() == null ? "String_Node_Str" : getAuditEventLabel(entry.getEvent()));
      json.put("String_Node_Str",entry.getIdentifier() == null ? "String_Node_Str" : entry.getIdentifier());
      json.put("String_Node_Str",entry.getPath() == null ? "String_Node_Str" : entry.getPath());
      JSONArray changedValues=new JSONArray();
      if (entry.getChangedProperties() != null) {
        for (        QName valueName : entry.getChangedProperties().keySet()) {
          Pair<Serializable,Serializable> values=entry.getChangedProperties().get(valueName);
          JSONObject changedValue=new JSONObject();
          changedValue.put("String_Node_Str",getPropertyLabel(valueName));
          changedValue.put("String_Node_Str",values.getFirst() == null ? "String_Node_Str" : values.getFirst().toString());
          changedValue.put("String_Node_Str",values.getSecond() == null ? "String_Node_Str" : values.getSecond().toString());
          changedValues.put(changedValue);
        }
      }
      json.put("String_Node_Str",changedValues);
      writer.write(json.toString());
    }
 catch (    JSONException je) {
      writer.write("String_Node_Str");
    }
  }
}

Fixed version (ground truth):
/** 
 * Writes an audit trail entry to the given writer
 * @param writer The writer to write to
 * @param entry The entry to write
 * @param reportFormat The format to write the header in
 * @throws IOException
 */
private void writeAuditTrailEntry(Writer writer,RecordsManagementAuditEntry entry,ReportFormat reportFormat) throws IOException {
  if (writer == null) {
    return;
  }
  if (reportFormat == ReportFormat.HTML) {
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write(StringEscapeUtils.escapeHtml(entry.getTimestamp().toString()));
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    writer.write(entry.getFullName() != null ? StringEscapeUtils.escapeHtml(entry.getFullName()) : StringEscapeUtils.escapeHtml(entry.getUserName()));
    writer.write("String_Node_Str");
    if (entry.getUserRole() != null && entry.getUserRole().length() > 0) {
      writer.write("String_Node_Str");
      writer.write("String_Node_Str");
      writer.write(StringEscapeUtils.escapeHtml(entry.getUserRole()));
      writer.write("String_Node_Str");
    }
    if (entry.getEvent() != null && entry.getEvent().length() > 0) {
      writer.write("String_Node_Str");
      writer.write("String_Node_Str");
      writer.write(StringEscapeUtils.escapeHtml(getAuditEventLabel(entry.getEvent())));
      writer.write("String_Node_Str");
    }
    writer.write("String_Node_Str");
    writer.write("String_Node_Str");
    if (entry.getIdentifier() != null && entry.getIdentifier().length() > 0) {
      writer.write("String_Node_Str");
      writer.write("String_Node_Str");
      writer.write(StringEscapeUtils.escapeHtml(entry.getIdentifier()));
      writer.write("String_Node_Str");
    }
    if (entry.getNodeType() != null && entry.getNodeType().length() > 0) {
      writer.write("String_Node_Str");
      writer.write("String_Node_Str");
      writer.write(StringEscapeUtils.escapeHtml(entry.getNodeType()));
      writer.write("String_Node_Str");
    }
    if (entry.getPath() != null && entry.getPath().length() > 0) {
      String path=entry.getPath();
      String displayPath=path;
      int idx=path.indexOf('/',1);
      if (idx != -1) {
        displayPath="String_Node_Str" + path.substring(idx);
      }
      writer.write("String_Node_Str");
      writer.write("String_Node_Str");
      writer.write(StringEscapeUtils.escapeHtml(displayPath));
      writer.write("String_Node_Str");
    }
    writer.write("String_Node_Str");
    if (entry.getChangedProperties() != null) {
      writer.write("String_Node_Str");
      writer.write("String_Node_Str");
      for (      QName valueName : entry.getChangedProperties().keySet()) {
        Pair<Serializable,Serializable> values=entry.getChangedProperties().get(valueName);
        writer.write("String_Node_Str");
        writer.write(getPropertyLabel(valueName));
        writer.write("String_Node_Str");
        Serializable oldValue=values.getFirst();
        writer.write(oldValue == null ? "String_Node_Str" : StringEscapeUtils.escapeHtml(oldValue.toString()));
        writer.write("String_Node_Str");
        Serializable newValue=values.getSecond();
        writer.write(newValue == null ? "String_Node_Str" : StringEscapeUtils.escapeHtml(newValue.toString()));
        writer.write("String_Node_Str");
      }
      writer.write("String_Node_Str");
    }
    writer.write("String_Node_Str");
  }
 else {
    try {
      JSONObject json=new JSONObject();
      json.put("String_Node_Str",entry.getTimestampString());
      json.put("String_Node_Str",entry.getUserName());
      json.put("String_Node_Str",entry.getUserRole() == null ? "String_Node_Str" : entry.getUserRole());
      json.put("String_Node_Str",entry.getFullName() == null ? "String_Node_Str" : entry.getFullName());
      json.put("String_Node_Str",entry.getNodeRef() == null ? "String_Node_Str" : entry.getNodeRef());
      if (entry.getEvent().equals("String_Node_Str") == true && entry.getNodeRef() != null) {
        NodeRef nodeRef=entry.getNodeRef();
        String userName=(String)nodeService.getProperty(nodeRef,ContentModel.PROP_USERNAME);
        json.put("String_Node_Str",userName == null ? "String_Node_Str" : userName);
      }
 else {
        json.put("String_Node_Str",entry.getNodeName() == null ? "String_Node_Str" : entry.getNodeName());
      }
      json.put("String_Node_Str",entry.getNodeType() == null ? "String_Node_Str" : entry.getNodeType());
      json.put("String_Node_Str",entry.getEvent() == null ? "String_Node_Str" : getAuditEventLabel(entry.getEvent()));
      json.put("String_Node_Str",entry.getIdentifier() == null ? "String_Node_Str" : entry.getIdentifier());
      json.put("String_Node_Str",entry.getPath() == null ? "String_Node_Str" : entry.getPath());
      JSONArray changedValues=new JSONArray();
      if (entry.getChangedProperties() != null) {
        for (        QName valueName : entry.getChangedProperties().keySet()) {
          Pair<Serializable,Serializable> values=entry.getChangedProperties().get(valueName);
          JSONObject changedValue=new JSONObject();
          changedValue.put("String_Node_Str",getPropertyLabel(valueName));
          changedValue.put("String_Node_Str",values.getFirst() == null ? "String_Node_Str" : values.getFirst().toString());
          changedValue.put("String_Node_Str",values.getSecond() == null ? "String_Node_Str" : values.getSecond().toString());
          changedValues.put(changedValue);
        }
      }
      json.put("String_Node_Str",changedValues);
      writer.write(json.toString());
    }
 catch (    JSONException je) {
      writer.write("String_Node_Str");
    }
  }
}