Program: 59100
Project: 59100
Buggy source:
public void getProductInformation(ActionRequest request,ActionResponse response){
  SalesOrderLine salesOrderLine=request.getContext().asType(SalesOrderLine.class);
  SalesOrder salesOrder=salesOrderLine.getSalesOrder();
  if (salesOrder == null) {
    salesOrder=request.getContext().getParentContext().asType(SalesOrder.class);
  }
  if (salesOrder != null && salesOrderLine.getProduct() != null) {
    try {
      BigDecimal price=salesOrderLineService.getUnitPrice(salesOrder,salesOrderLine);
      response.setValue("String_Node_Str",salesOrderLineService.getTaxLine(salesOrder,salesOrderLine));
      response.setValue("String_Node_Str",salesOrderLine.getProduct().getName());
      response.setValue("String_Node_Str",salesOrderLine.getProduct().getDefaultSupplierPartner());
      response.setValue("String_Node_Str",salesOrderLine.getProduct().getSaleSupplySelect());
      response.setValue("String_Node_Str",salesOrderLine.getProduct().getUnit());
      response.setValue("String_Node_Str",salesOrderLineService.getCompanyCostPrice(salesOrder,salesOrderLine));
      PriceList priceList=salesOrder.getPriceList();
      if (priceList != null) {
        PriceListLine priceListLine=salesOrderLineService.getPriceListLine(salesOrderLine,priceList);
        Map<String,Object> discounts=priceListService.getDiscounts(priceList,priceListLine,price);
        response.setValue("String_Node_Str",discounts.get("String_Node_Str"));
        response.setValue("String_Node_Str",discounts.get("String_Node_Str"));
        if (discounts.get("String_Node_Str") != null) {
          price=(BigDecimal)discounts.get("String_Node_Str");
        }
      }
      response.setValue("String_Node_Str",price);
    }
 catch (    Exception e) {
      response.setFlash(e.getMessage());
      this.resetProductInformation(response);
    }
  }
 else {
    this.resetProductInformation(response);
  }
}

Fixed version (ground truth):
public void getProductInformation(ActionRequest request,ActionResponse response){
  SalesOrderLine salesOrderLine=request.getContext().asType(SalesOrderLine.class);
  SalesOrder salesOrder=salesOrderLine.getSalesOrder();
  if (salesOrder == null) {
    salesOrder=request.getContext().getParentContext().asType(SalesOrder.class);
  }
  if (salesOrder != null && salesOrderLine.getProduct() != null) {
    try {
      BigDecimal price=salesOrderLineService.getUnitPrice(salesOrder,salesOrderLine);
      response.setValue("String_Node_Str",salesOrderLineService.getTaxLine(salesOrder,salesOrderLine));
      response.setValue("String_Node_Str",salesOrderLine.getProduct().getName());
      response.setValue("String_Node_Str",salesOrderLine.getProduct().getSaleSupplySelect());
      response.setValue("String_Node_Str",salesOrderLine.getProduct().getUnit());
      response.setValue("String_Node_Str",salesOrderLineService.getCompanyCostPrice(salesOrder,salesOrderLine));
      PriceList priceList=salesOrder.getPriceList();
      if (priceList != null) {
        PriceListLine priceListLine=salesOrderLineService.getPriceListLine(salesOrderLine,priceList);
        Map<String,Object> discounts=priceListService.getDiscounts(priceList,priceListLine,price);
        response.setValue("String_Node_Str",discounts.get("String_Node_Str"));
        response.setValue("String_Node_Str",discounts.get("String_Node_Str"));
        if (discounts.get("String_Node_Str") != null) {
          price=(BigDecimal)discounts.get("String_Node_Str");
        }
      }
      response.setValue("String_Node_Str",price);
    }
 catch (    Exception e) {
      response.setFlash(e.getMessage());
      this.resetProductInformation(response);
    }
  }
 else {
    this.resetProductInformation(response);
  }
}