killbill-uncached

analytics: fix NPE in BusinessAccount Set the balance and

7/23/2012 5:16:49 PM

Details

diff --git a/analytics/src/main/java/com/ning/billing/analytics/model/BusinessAccount.java b/analytics/src/main/java/com/ning/billing/analytics/model/BusinessAccount.java
index b3cc61c..116597e 100644
--- a/analytics/src/main/java/com/ning/billing/analytics/model/BusinessAccount.java
+++ b/analytics/src/main/java/com/ning/billing/analytics/model/BusinessAccount.java
@@ -24,6 +24,8 @@ import org.joda.time.LocalDate;
 
 import com.ning.billing.analytics.utils.Rounder;
 
+import com.google.common.base.Objects;
+
 public class BusinessAccount {
     // Populated by the database
     private DateTime createdDt = null;
@@ -72,7 +74,7 @@ public class BusinessAccount {
     }
 
     public BigDecimal getBalance() {
-        return balance;
+        return Objects.firstNonNull(balance, BigDecimal.ZERO);
     }
 
     public Double getRoundedBalance() {
@@ -140,7 +142,7 @@ public class BusinessAccount {
     }
 
     public BigDecimal getTotalInvoiceBalance() {
-        return totalInvoiceBalance;
+        return Objects.firstNonNull(totalInvoiceBalance, BigDecimal.ZERO);
     }
 
     public Double getRoundedTotalInvoiceBalance() {
diff --git a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessAccount.java b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessAccount.java
index bdd1a7a..251072d 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessAccount.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessAccount.java
@@ -50,4 +50,16 @@ public class TestBusinessAccount extends AnalyticsTestSuite {
                                                                  BigDecimal.TEN, "ERROR_NOT_ENOUGH_FUNDS", "CreditCard", "Visa", "");
         Assert.assertFalse(account.equals(otherAccount));
     }
+
+    @Test(groups = "fast")
+    public void testDefaultBigDecimalValues() throws Exception {
+        final BusinessAccount bac = new BusinessAccount(UUID.randomUUID());
+        Assert.assertEquals(bac.getBalance(), BigDecimal.ZERO);
+        Assert.assertEquals(bac.getTotalInvoiceBalance(), BigDecimal.ZERO);
+
+        bac.setBalance(BigDecimal.ONE);
+        bac.setTotalInvoiceBalance(BigDecimal.TEN);
+        Assert.assertEquals(bac.getBalance(), BigDecimal.ONE);
+        Assert.assertEquals(bac.getTotalInvoiceBalance(), BigDecimal.TEN);
+    }
 }