[Demonstration 1]

[Buggy Method]
public void populateActivateDBPayload(Exchange exchange) {
    log.info("Inside populateActivateDBPayload");
    ArrayList<Transaction> list = new ArrayList<Transaction>();
    String currentDataTime = CommonUtil.getCurrentTimeStamp();
    ActivateDeviceRequest req = (ActivateDeviceRequest) exchange.getIn().getBody();
    ActivateDeviceRequestDataArea activateDeviceRequestDataArea = (ActivateDeviceRequestDataArea) req.getDataArea();
    ActivateDevices[] activateDevices = activateDeviceRequestDataArea.getDevices();
    Kryo kryo = new Kryo();
    for (ActivateDevices activateDevice : activateDevices) {
        ActivateDeviceRequest dbPayload = new ActivateDeviceRequest();
        dbPayload.setHeader(req.getHeader());
        ActivateDevices[] businessPayLoadDevicesArray = new ActivateDevices[1];
        ActivateDevices businessPayLoadActivateDevices = new ActivateDevices();
        ActivateDeviceId[] businessPayloadDeviceId = new ActivateDeviceId[activateDevice.getDeviceIds().length];
        for (int i = 0; i < activateDevice.getDeviceIds().length; i++) {
            ActivateDeviceId activateDeviceId = activateDevice.getDeviceIds()[i];
            ActivateDeviceId businessPayLoadActivateDeviceId = new ActivateDeviceId();
            businessPayLoadActivateDeviceId.seteAPCode(activateDeviceId.geteAPCode());
            businessPayLoadActivateDeviceId.setId(activateDeviceId.getId());
            businessPayLoadActivateDeviceId.setKind(activateDeviceId.getKind());
            businessPayloadDeviceId[i] = businessPayLoadActivateDeviceId;
        }
        businessPayLoadActivateDevices.setDeviceIds(businessPayloadDeviceId);
        businessPayLoadDevicesArray[0] = businessPayLoadActivateDevices;
        ActivateDeviceRequestDataArea copyDataArea = kryo.copy(req.getDataArea());
        copyDataArea.setDevices(businessPayLoadDevicesArray);
        dbPayload.setDataArea(copyDataArea);
        // copy.getDataArea().setDevices();
        try {
            /*ObjectMapper mapper = new ObjectMapper();
				String msgBody = mapper.writeValueAsString(dbPayload);*/
            Transaction transaction = new Transaction();
            transaction.setMidwayTransationID(exchange.getProperty(IConstant.MIDWAY_TRANSACTION_ID).toString());
            // TODO if number of devices are more
            ObjectMapper obj = new ObjectMapper();
            String strDeviceNumber = obj.writeValueAsString(businessPayloadDeviceId);
            transaction.setDeviceNumber(strDeviceNumber);
            transaction.setDevicePayload(dbPayload);
            transaction.setMidwayStatus(IConstant.MIDWAY_TRANSACTION_STATUS_PENDING);
            transaction.setCarrierName(exchange.getProperty(IConstant.BSCARRIER).toString());
            transaction.setTimeStampReceived(currentDataTime);
            transaction.setAuditTransationID(exchange.getProperty(IConstant.AUDIT_TRANSACTION_ID).toString());
            transaction.setRequestType(exchange.getFromEndpoint().toString());
            list.add(transaction);
        } catch (Exception ex) {
            log.error("Inside populateActivateDBPayload");
        }
    }
    mongoTemplate.insertAll(list);
    // For Kore We Need Wire Tap and SEDA component So the body should
    // be set with arraylist of transaction for Verizon we simply add
    // into database and do not change the exchange body
    // activateDeviceRequestDataArea.setDevices(activateDevices);
    if (exchange.getProperty(IConstant.MIDWAY_DERIVED_CARRIER_NAME).toString().equals("KORE")) {
        exchange.getIn().setBody(list);
    }
}

[Buggy Hunk]
transaction.setCarrierName(exchange.getProperty(IConstant.BSCARRIER).toString());

[Patch]
transaction.setCarrierName(exchange.getProperty(IConstant.MIDWAY_DERIVED_CARRIER_NAME).toString());

[Demonstration 2]

[Buggy Method]
public void performRemove(String baseURI, Resource subject, IRI predicate, Value object, Transaction tx, Resource... contexts) throws MarkLogicRdf4jException {
    StringBuilder sb = new StringBuilder();
    String[] contextArgs = null;
    if (notNull(contexts) && contexts.length > 0) {
        if (notNull(baseURI))
            sb.append("BASE <" + baseURI + ">\n");
        contextArgs = new String[contexts.length];
        for (int i = 0; i < contexts.length; i++) {
            if (notNull(contexts[i])) {
                contextArgs[i] = contexts[i].stringValue();
            }
        }
    }
    sb.append("DELETE WHERE { GRAPH ?ctx { ?s ?p ?o .}}");
    SPARQLQueryDefinition qdef = sparqlManager.newQueryDefinition(sb.toString());
    if (notNull(contextArgs))
        qdef.setUsingNamedGraphUris(contextArgs);
    if (notNull(baseURI) && !baseURI.isEmpty()) {
        qdef.setBaseUri(baseURI);
    }
    if (notNull(subject))
        qdef.withBinding("s", subject.stringValue());
    if (notNull(predicate))
        qdef.withBinding("p", predicate.stringValue());
    if (notNull(object))
        bindObject(qdef, "o", object);
    sparqlManager.executeUpdate(qdef, tx);
}

[Buggy Hunk]
if(notNull(contexts) && contexts.length>0)

[Patch]
if(contexts.length>0)

[Demonstration 3]

[Buggy Method]
void add(Subject subject) {
    for (int i = 0; i < size(); i++) {
        if (subjects.get(i).getName().compareTo(subject.getName()) >= 1) {
            subjects.add(subject);
            return;
        }
    }
    // If the subject hasn't been added to the list
    // it will be added as the last subject.
    subjects.add(subject);
}

[Buggy Hunk]
subjects.add(subject);

[Patch]
subjects.add(i, subject);