[Demonstration 1]

[Buggy Method]
@Override
public boolean add(Command.Status status) {
    boolean isAdded = false;
    final String addClientQuery = "INSERT INTO command_statuses (command_id,status,status_message,status_happened_at) VALUES (?,?,?,?);";
    final java.sql.Connection con = Connection.getConnection();
    //To track the success
    try {
        final PreparedStatement ps = con.prepareStatement(addClientQuery);
        ps.setString(1, status.getCommandId());
        ps.setString(2, status.getStatus());
        ps.setString(3, status.getStatusMessage());
        ps.setLong(4, status.getCommandHappenedAt());
        isAdded = ps.executeUpdate() == 1;
        ps.close();
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        try {
            con.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    return isAdded;
}

[Buggy Hunk]
ps.setString(3, status.getStatusMessage());

[Patch]
ps.setString(3, status.getStatusMessage().replaceAll(",", "|"));

[Demonstration 2]

[Buggy Method]
@Override
public void onRequestedWrite(String newJvmName, String oldJvmName) {
    strings.add("CL: ".concat(newJvmName).concat(" ").concat(oldJvmName));
}

[Buggy Hunk]
strings.add("CL: ".concat(newJvmName).concat(" ").concat(oldJvmName));

[Patch]
strings.add("CL: ".concat(newJvmName).concat(" ").concat(oldJvmName) + "\n");

[Demonstration 3]

[Buggy Method]
@Override
public List<IdentificationTransaction> getCivilIdentificationTransactions(SAMLTokenPrincipal token, IdentificationResultSearchRequest searchRequest) {
    StringBuilder sb = new StringBuilder();
    sb.append("SELECT t.transaction_number, t.identification_category, " + "t.report_timestamp as transaction_timestamp, t.otn, t.owner_ori,  t.owner_program_oca, t.archived, s.*, sub.*, " + "(select count(*) > 0 from subsequent_results subsq where subsq.ucn = s.ucn) as having_subsequent_result " + "FROM identification_transaction t " + "LEFT OUTER JOIN identification_subject s ON s.subject_id = t.subject_id " + "LEFT OUTER JOIN subscription sub ON sub.id = t.subscription_id " + "WHERE (select count(*)>0 from " + "	civil_initial_results c where c.transaction_number = t.transaction_number) " + "	AND (:firstName is null OR upper(s.first_name) like concat(upper(:firstName), '%')) " + " AND (:lastName is null OR upper(s.last_name) like concat(upper(:lastName), '%' ) )" + "	AND (:otn is null OR t.otn = :otn ) " + "	AND (:startDate is null OR t.report_timestamp >= :startDate ) " + "	AND (:endDate is null OR t.report_timestamp <= :endDate ) " + "	AND (:excludeArchived = false OR t.archived != true ) " + "	AND (:excludeSubscribed = false OR (t.archived = true OR sub.id is null OR sub.id <= 0 OR sub.active = false )) " + "	AND (:excludeAvailableForSubscription  = false OR (t.archived = true OR (sub.id > 0 AND sub.active = true))) " + "	AND (:identificationReasonCode is null OR identification_category in (:identificationReasonCode)) ");
    Map<String, Object> paramMap = new HashMap<String, Object>();
    paramMap.put("firstName", searchRequest.getFirstName());
    paramMap.put("lastName", searchRequest.getLastName());
    paramMap.put("otn", searchRequest.getOtn());
    paramMap.put("startDate", searchRequest.getReportedDateStartDate());
    paramMap.put("endDate", searchRequest.getReportedDateEndDate());
    paramMap.put("excludeArchived", isExcluding(searchRequest.getIdentificationTransactionStatus(), IdentificationTransactionState.Archived));
    paramMap.put("excludeSubscribed", isExcluding(searchRequest.getIdentificationTransactionStatus(), IdentificationTransactionState.Subscribed));
    paramMap.put("excludeAvailableForSubscription", isExcluding(searchRequest.getIdentificationTransactionStatus(), IdentificationTransactionState.Available_for_Subscription));
    paramMap.put("identificationReasonCode", searchRequest.getCivilIdentificationReasonCodes().isEmpty() ? null : searchRequest.getCivilIdentificationReasonCodes().isEmpty());
    String ori = SAMLTokenUtils.getAttributeValueFromSamlToken(token, SamlAttribute.EmployerORI);
    String federationId = SAMLTokenUtils.getAttributeValueFromSamlToken(token, SamlAttribute.FederationId);
    boolean isNotSuperUser = isNotSuperUser(ori, federationId);
    boolean isNotAgencySuperUser = isNotAgencySuperUser(ori, federationId);
    if (isNotSuperUser) {
        sb.append("AND t.owner_ori = :ori ");
        paramMap.put("ori", ori);
    }
    if (isNotSuperUser && isNotAgencySuperUser) {
        if (isNotCivilAgencyUser(ori)) {
            sb.append(" AND t.identification_category in ( :identificationCategoryList )");
            List<String> identificationCategorys = getViewableIdentificationCategories(token, "CIVIL");
            paramMap.put("identificationCategoryList", identificationCategorys);
        }
    }
    List<IdentificationTransaction> identificationTransactions = namedParameterJdbcTemplate.query(sb.toString(), paramMap, new FullIdentificationTransactionRowMapper());
    return identificationTransactions;
}

[Buggy Hunk]
paramMap.put("identificationReasonCode", searchRequest.getCivilIdentificationReasonCodes().isEmpty()?null:searchRequest.getCivilIdentificationReasonCodes().isEmpty());

[Patch]
paramMap.put("identificationReasonCode", searchRequest.getCivilIdentificationReasonCodes().isEmpty()?null:searchRequest.getCivilIdentificationReasonCodes());