Program: 59105
Project: 59105
Buggy source:
public void getProductInformation(ActionRequest request,ActionResponse response){
  PurchaseOrderLine purchaseOrderLine=request.getContext().asType(PurchaseOrderLine.class);
  PurchaseOrder purchaseOrder=purchaseOrderLine.getPurchaseOrder();
  if (purchaseOrder == null) {
    purchaseOrder=request.getContext().getParentContext().asType(PurchaseOrder.class);
  }
  if (purchaseOrder != null && purchaseOrderLine.getProduct() != null) {
    try {
      BigDecimal price=purchaseOrderLineService.getUnitPrice(purchaseOrder,purchaseOrderLine);
      response.setValue("String_Node_Str",purchaseOrderLineService.getTaxLine(purchaseOrder,purchaseOrderLine));
      response.setValue("String_Node_Str",purchaseOrderLine.getProduct().getName());
      response.setValue("String_Node_Str",purchaseOrderLine.getProduct().getUnit());
      PriceList priceList=purchaseOrder.getPriceList();
      if (priceList != null) {
        PriceListLine priceListLine=purchaseOrderLineService.getPriceListLine(purchaseOrderLine,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){
  PurchaseOrderLine purchaseOrderLine=request.getContext().asType(PurchaseOrderLine.class);
  PurchaseOrder purchaseOrder=purchaseOrderLine.getPurchaseOrder();
  if (purchaseOrder == null) {
    purchaseOrder=request.getContext().getParentContext().asType(PurchaseOrder.class);
  }
  if (purchaseOrder != null && purchaseOrderLine.getProduct() != null) {
    try {
      BigDecimal price=purchaseOrderLineService.getUnitPrice(purchaseOrder,purchaseOrderLine);
      response.setValue("String_Node_Str",purchaseOrderLineService.getTaxLine(purchaseOrder,purchaseOrderLine));
      response.setValue("String_Node_Str",purchaseOrderLine.getProduct().getName());
      response.setValue("String_Node_Str",purchaseOrderLine.getProduct().getUnit());
      response.setValue("String_Node_Str",purchaseOrderLineService.getQty(purchaseOrderLine));
      response.setValue("String_Node_Str",purchaseOrderLineService.getMinSalePrice(purchaseOrder,purchaseOrderLine));
      response.setValue("String_Node_Str",purchaseOrderLineService.getSalePrice(purchaseOrder,price));
      PriceList priceList=purchaseOrder.getPriceList();
      if (priceList != null) {
        PriceListLine priceListLine=purchaseOrderLineService.getPriceListLine(purchaseOrderLine,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);
  }
}