killbill-memoizeit

Details

diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/AccountTimelineJson.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/AccountTimelineJson.java
index 1241b7d..4521257 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/AccountTimelineJson.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/AccountTimelineJson.java
@@ -15,16 +15,21 @@
  */
 package com.ning.billing.jaxrs.json;
 
+import java.math.BigDecimal;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.UUID;
 
 import org.codehaus.jackson.annotate.JsonCreator;
 import org.codehaus.jackson.annotate.JsonProperty;
 import org.codehaus.jackson.map.annotate.JsonView;
+import org.joda.time.DateTime;
 
 import com.ning.billing.account.api.Account;
+import com.ning.billing.catalog.api.Currency;
 import com.ning.billing.entitlement.api.timeline.BundleTimeline;
 import com.ning.billing.invoice.api.Invoice;
+import com.ning.billing.payment.api.PaymentAttempt;
 import com.ning.billing.payment.api.PaymentInfoEvent;
 
 public class AccountTimelineJson {
@@ -52,7 +57,7 @@ public class AccountTimelineJson {
         this.payments = payments;
     }
     
-    public AccountTimelineJson(Account account, List<Invoice> invoices, List<PaymentInfoEvent> payments, List<BundleTimeline> bundles) {
+    public AccountTimelineJson(Account account, List<Invoice> invoices, List<PaymentAttempt> payments, List<BundleTimeline> bundles) {
         this.account = new AccountJsonSimple(account.getId().toString(), account.getExternalKey());
         this.bundles = new LinkedList<BundleJsonWithSubscriptions>();
         for (BundleTimeline cur : bundles) {
@@ -63,10 +68,13 @@ public class AccountTimelineJson {
             this.invoices.add(new InvoiceJson(cur.getTotalAmount(), cur.getId().toString(), cur.getInvoiceDate(), Integer.toString(cur.getInvoiceNumber()), cur.getBalance()));
         }
         this.payments = new LinkedList<PaymentJson>();
-        for (PaymentInfoEvent cur : payments) {
-            // STEPH how to link that payment with the invoice ??
-            this.payments.add(new PaymentJson(cur.getAmount(), null , cur.getPaymentNumber(), null, cur.getEffectiveDate(), cur.getStatus()));
-        }
+        for (PaymentAttempt cur : payments) {
+            String status = cur.getPaymentId() != null ? "Success" : "Failed";
+            BigDecimal paidAmount = cur.getPaymentId() != null ? cur.getAmount() : BigDecimal.ZERO;
+            
+            this.payments.add(new PaymentJson(cur.getAmount(), paidAmount, cur.getInvoiceId().toString(), cur.getPaymentId(), cur.getCreatedDate(), cur.getUpdatedDate(),
+                    cur.getRetryCount(), cur.getCurrency().toString(), status));
+          }
     }
     
     public AccountTimelineJson() {
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/PaymentJson.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/PaymentJson.java
index 3a9fd4d..6799c74 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/PaymentJson.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/PaymentJson.java
@@ -27,37 +27,45 @@ import com.ning.billing.util.clock.DefaultClock;
 
 public class PaymentJson {
 
-    @JsonView(BundleTimelineViews.Base.class)
     private final BigDecimal paidAmount;
-    
-    @JsonView(BundleTimelineViews.Base.class)
+
+    private final BigDecimal amount;
+
     private final String invoiceId;
     
-    @JsonView(BundleTimelineViews.Base.class)
     private final String paymentId;
     
-    @JsonView(BundleTimelineViews.Base.class)
     private final DateTime requestedDate;
     
-    @JsonView(BundleTimelineViews.Base.class)
     private final DateTime effectiveDate;
     
-    @JsonView(BundleTimelineViews.Base.class)
+    private final Integer retryCount;
+    
+    private final String currency;
+    
     private final String status;
+    
+    
 
     @JsonCreator
-    public PaymentJson(@JsonProperty("paid_amount") BigDecimal paidAmount,
+    public PaymentJson(@JsonProperty("amount") BigDecimal amount,
+            @JsonProperty("paid_amount") BigDecimal paidAmount,
             @JsonProperty("invoice_id") String invoiceId,
             @JsonProperty("payment_id") String paymentId,
             @JsonProperty("requested_dt") DateTime requestedDate,
             @JsonProperty("effective_dt") DateTime effectiveDate,
+            @JsonProperty("retry_count") Integer retryCount,
+            @JsonProperty("currency") String currency,            
             @JsonProperty("status") String status) {
         super();
+        this.amount = amount;
         this.paidAmount = paidAmount;
         this.invoiceId = invoiceId;
         this.paymentId = paymentId;
         this.requestedDate = DefaultClock.toUTCDateTime(requestedDate);
         this.effectiveDate = DefaultClock.toUTCDateTime(effectiveDate);
+        this.currency = currency;
+        this.retryCount = retryCount;
         this.status = status;
     }
 
@@ -84,4 +92,16 @@ public class PaymentJson {
     public String getStatus() {
         return status;
     }
+
+    public BigDecimal getAmount() {
+        return amount;
+    }
+
+    public Integer getRetryCount() {
+        return retryCount;
+    }
+
+    public String getCurrency() {
+        return currency;
+    }
 }
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/AccountResource.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/AccountResource.java
index 80f8253..03ec3ba 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/AccountResource.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/AccountResource.java
@@ -65,6 +65,7 @@ import com.ning.billing.jaxrs.json.BundleJsonNoSubsciptions;
 import com.ning.billing.jaxrs.util.Context;
 import com.ning.billing.jaxrs.util.JaxrsUriBuilder;
 import com.ning.billing.payment.api.PaymentApi;
+import com.ning.billing.payment.api.PaymentAttempt;
 import com.ning.billing.payment.api.PaymentInfoEvent;
 
 
@@ -229,7 +230,7 @@ public class AccountResource implements BaseJaxrsResource {
             Account account = accountApi.getAccountById(UUID.fromString(accountId));
            
             List<Invoice> invoices = invoiceApi.getInvoicesByAccount(account.getId());
-            List<PaymentInfoEvent> payments = Collections.emptyList();
+            List<PaymentAttempt> payments = new LinkedList<PaymentAttempt>();
 
             if (invoices.size() > 0) {
                 Collection<String> tmp = Collections2.transform(invoices, new Function<Invoice, String>() {
@@ -240,8 +241,9 @@ public class AccountResource implements BaseJaxrsResource {
                 });
                 List<String> invoicesId = new ArrayList<String>();
                 invoicesId.addAll(tmp);
-
-                payments = paymentApi.getPaymentInfo(invoicesId);
+                for (String curId : invoicesId) {
+                    payments.addAll(paymentApi.getPaymentAttemptsForInvoiceId(curId));
+                }
             }
 
             List<SubscriptionBundle> bundles = entitlementApi.getBundlesForAccount(account.getId());