From dfb0090666d7f9fe5a0f8e8b56cd2eef2dafcd06 Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Fri, 30 Mar 2012 16:12:51 +0200 Subject: [PATCH] Prevent NPE in OrderElement::getSumChargedEffort() Now SumChargeEffort objects are not created till some hours are reported, so it could be null in some cases. FEA: ItEr76S14ConcurrencyProblemWorkReports --- .../java/org/libreplan/business/orders/entities/OrderLine.java | 3 ++- .../business/test/orders/daos/OrderElementDAOTest.java | 2 ++ .../libreplan/web/orders/AssignedHoursToOrderElementModel.java | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/libreplan-business/src/main/java/org/libreplan/business/orders/entities/OrderLine.java b/libreplan-business/src/main/java/org/libreplan/business/orders/entities/OrderLine.java index 3fd153916..88ab4eba8 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/orders/entities/OrderLine.java +++ b/libreplan-business/src/main/java/org/libreplan/business/orders/entities/OrderLine.java @@ -126,7 +126,8 @@ public class OrderLine extends OrderElement { if (!getMaterialAssignments().isEmpty()) { return false; } - if (!getSumChargedEffort().getDirectChargedEffort().isZero()) { + if (getSumChargedEffort() != null + && !getSumChargedEffort().getDirectChargedEffort().isZero()) { return false; } if (!getTaskElements().isEmpty()) { diff --git a/libreplan-business/src/test/java/org/libreplan/business/test/orders/daos/OrderElementDAOTest.java b/libreplan-business/src/test/java/org/libreplan/business/test/orders/daos/OrderElementDAOTest.java index a4624a591..7c47ecf29 100644 --- a/libreplan-business/src/test/java/org/libreplan/business/test/orders/daos/OrderElementDAOTest.java +++ b/libreplan-business/src/test/java/org/libreplan/business/test/orders/daos/OrderElementDAOTest.java @@ -59,6 +59,7 @@ import org.libreplan.business.orders.entities.Order; import org.libreplan.business.orders.entities.OrderElement; import org.libreplan.business.orders.entities.OrderLine; import org.libreplan.business.orders.entities.OrderLineGroup; +import org.libreplan.business.orders.entities.SumChargedEffort; import org.libreplan.business.qualityforms.daos.IQualityFormDAO; import org.libreplan.business.qualityforms.entities.QualityForm; import org.libreplan.business.qualityforms.entities.TaskQualityForm; @@ -420,6 +421,7 @@ public class OrderElementDAOTest { @Test public void testSumChargedHoursRelation() throws InstanceNotFoundException { OrderLine orderLine = createValidOrderLine(); + orderLine.setSumChargedEffort(SumChargedEffort.create(orderLine)); orderLine.getSumChargedEffort().addDirectChargedEffort( EffortDuration.hours(8)); diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/orders/AssignedHoursToOrderElementModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/orders/AssignedHoursToOrderElementModel.java index d334594c1..ef9e6f09a 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/orders/AssignedHoursToOrderElementModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/orders/AssignedHoursToOrderElementModel.java @@ -156,7 +156,7 @@ public class AssignedHoursToOrderElementModel implements @Override public EffortDuration getTotalAssignedEffort() { - if (orderElement == null) { + if (orderElement == null || orderElement.getSumChargedEffort() == null) { return EffortDuration.zero(); } return this.orderElement.getSumChargedEffort().getTotalChargedEffort();