Program: 58928
Project: 58928
Buggy source:
/** 
 * Lancer le batch à travers un web service.
 * @param request
 * @param response
 */
public void webServicePaybox(ActionRequest request,ActionResponse response) throws Exception {
  Context context=request.getContext();
  PaymentVoucherPayboxService paymentVoucherPayboxService=Beans.get(PaymentVoucherPayboxService.class);
  String idPaymentVoucher=(String)context.get("String_Node_Str");
  String operation=(String)context.get("String_Node_Str");
  String signature=(String)context.get("String_Node_Str");
  if (idPaymentVoucher != null && operation != null && signature != null) {
    LOG.debug("String_Node_Str" + idPaymentVoucher);
    PaymentVoucher paymentVoucher=paymentVoucherPayboxService.find(Long.parseLong(idPaymentVoucher));
    LOG.debug("String_Node_Str" + paymentVoucher);
    boolean verified=false;
    if (paymentVoucher != null && paymentVoucher.getCompany() != null && !paymentVoucher.getPayboxPaidOk()) {
      List<String> varList=new ArrayList<String>();
      String retourVars=paymentVoucher.getCompany().getAccountConfig().getPayboxConfig().getPayboxRetour();
      String[] retours=retourVars.split("String_Node_Str");
      varList.add("String_Node_Str" + idPaymentVoucher);
      LOG.debug("String_Node_Str" + idPaymentVoucher);
      varList.add("String_Node_Str" + operation);
      LOG.debug("String_Node_Str" + operation);
      for (int i=0; i < retours.length - 1; i++) {
        String variableName=retours[i].split("String_Node_Str")[0];
        String varValue=(String)context.get(variableName);
        String varBuilt=variableName + "String_Node_Str" + varValue;
        LOG.debug(varBuilt);
        if (varValue != null) {
          varList.add(varBuilt);
        }
      }
      verified=Beans.get(PayboxService.class).checkPaybox(signature,varList,paymentVoucher.getCompany());
      LOG.debug("String_Node_Str",verified);
    }
    if (verified) {
      if (operation == "String_Node_Str" && (String)context.get("String_Node_Str") != null && (String)context.get("String_Node_Str") != null) {
        paymentVoucherPayboxService.authorizeConfirmPaymentVoucher(paymentVoucher,(String)context.get("String_Node_Str"),(String)context.get("String_Node_Str"));
        response.setFlash(I18n.get(IExceptionMessage.PAYBOX_6));
        LOG.debug("String_Node_Str");
      }
 else       if (operation == "String_Node_Str") {
        response.setFlash(I18n.get(IExceptionMessage.PAYBOX_7));
        LOG.debug("String_Node_Str");
      }
 else       if (operation == "String_Node_Str") {
        response.setFlash(I18n.get(IExceptionMessage.PAYBOX_8));
        LOG.debug("String_Node_Str");
      }
    }
 else {
      response.setFlash(I18n.get(IExceptionMessage.PAYBOX_9));
      LOG.debug("String_Node_Str");
    }
  }
}

Fixed version (ground truth):
/** 
 * Lancer le batch à travers un web service.
 * @param request
 * @param response
 * @throws Exception 
 */
public void webServicePaybox(ActionRequest request,ActionResponse response) throws Exception {
  Context context=request.getContext();
  PaymentVoucherPayboxService paymentVoucherPayboxService=Beans.get(PaymentVoucherPayboxService.class);
  String idPaymentVoucher=(String)context.get("String_Node_Str");
  String operation=(String)context.get("String_Node_Str");
  String signature=(String)context.get("String_Node_Str");
  if (idPaymentVoucher != null && operation != null && signature != null) {
    LOG.debug("String_Node_Str" + idPaymentVoucher);
    PaymentVoucher paymentVoucher=paymentVoucherPayboxService.find(Long.parseLong(idPaymentVoucher));
    LOG.debug("String_Node_Str" + paymentVoucher);
    boolean verified=false;
    if (paymentVoucher != null && paymentVoucher.getCompany() != null && !paymentVoucher.getPayboxPaidOk()) {
      List<String> varList=new ArrayList<String>();
      String retourVars=paymentVoucher.getCompany().getAccountConfig().getPayboxConfig().getPayboxRetour();
      String[] retours=retourVars.split("String_Node_Str");
      varList.add("String_Node_Str" + idPaymentVoucher);
      LOG.debug("String_Node_Str" + idPaymentVoucher);
      varList.add("String_Node_Str" + operation);
      LOG.debug("String_Node_Str" + operation);
      for (int i=0; i < retours.length - 1; i++) {
        String variableName=retours[i].split("String_Node_Str")[0];
        String varValue=(String)context.get(variableName);
        String varBuilt=variableName + "String_Node_Str" + varValue;
        LOG.debug(varBuilt);
        if (varValue != null) {
          varList.add(varBuilt);
        }
      }
      verified=Beans.get(PayboxService.class).checkPaybox(signature,varList,paymentVoucher.getCompany());
      LOG.debug("String_Node_Str",verified);
    }
    if (verified) {
      if (operation.equals("String_Node_Str") && (String)context.get("String_Node_Str") != null && (String)context.get("String_Node_Str") != null) {
        paymentVoucherPayboxService.authorizeConfirmPaymentVoucher(paymentVoucher,(String)context.get("String_Node_Str"),(String)context.get("String_Node_Str"));
        response.setFlash(I18n.get(IExceptionMessage.PAYBOX_6));
        LOG.debug("String_Node_Str");
      }
 else       if (operation.equals("String_Node_Str")) {
        response.setFlash(I18n.get(IExceptionMessage.PAYBOX_7));
        LOG.debug("String_Node_Str");
      }
 else       if (operation.equals("String_Node_Str")) {
        response.setFlash(I18n.get(IExceptionMessage.PAYBOX_8));
        LOG.debug("String_Node_Str");
      }
    }
 else {
      response.setFlash(I18n.get(IExceptionMessage.PAYBOX_9));
      LOG.debug("String_Node_Str");
    }
  }
}