killbill-aplcache

Details

diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/CreditJson.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/CreditJson.java
index 4ec1ad7..c4c24ad 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/CreditJson.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/CreditJson.java
@@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.ning.billing.invoice.api.InvoiceItem;
 
-// TODO: add invoice number, reason and requested date to the json
 public class CreditJson {
     private final BigDecimal creditAmount;
     private final UUID invoiceId;
@@ -33,6 +32,7 @@ public class CreditJson {
     private final DateTime requestedDate;
     private final DateTime effectiveDate;
     private final String reason;
+    private final UUID accountId;
 
     @JsonCreator
     public CreditJson(@JsonProperty("creditAmount") final BigDecimal creditAmount,
@@ -40,13 +40,15 @@ public class CreditJson {
                       @JsonProperty("invoiceNumber") final String invoiceNumber,
                       @JsonProperty("requestedDate") final DateTime requestedDate,
                       @JsonProperty("effectiveDate") final DateTime effectiveDate,
-                      @JsonProperty("reason") final String reason) {
+                      @JsonProperty("reason") final String reason,
+                      @JsonProperty("accountId") final UUID accountId) {
         this.creditAmount = creditAmount;
         this.invoiceId = invoiceId;
         this.invoiceNumber = invoiceNumber;
         this.requestedDate = requestedDate;
         this.effectiveDate = effectiveDate;
         this.reason = reason;
+        this.accountId = accountId;
     }
 
     public CreditJson(final InvoiceItem credit) {
@@ -56,6 +58,7 @@ public class CreditJson {
         this.requestedDate = null;
         this.effectiveDate = credit.getStartDate();
         this.reason = null;
+        this.accountId = credit.getAccountId();
     }
 
     public BigDecimal getCreditAmount() {
@@ -82,6 +85,10 @@ public class CreditJson {
         return reason;
     }
 
+    public UUID getAccountId() {
+        return accountId;
+    }
+
     @Override
     public boolean equals(final Object o) {
         if (this == o) {
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/CreditResource.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/CreditResource.java
index 226457e..85cae69 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/CreditResource.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/CreditResource.java
@@ -79,7 +79,6 @@ public class CreditResource implements JaxrsResource {
     }
 
     @POST
-    @Path("/accounts/{accountId:" + UUID_PATTERN + "}")
     @Consumes(APPLICATION_JSON)
     @Produces(APPLICATION_JSON)
     public Response createCredit(final CreditJson json,
@@ -106,33 +105,4 @@ public class CreditResource implements JaxrsResource {
             return Response.status(Response.Status.BAD_REQUEST).entity(error).build();
         }
     }
-
-
 }
-
-
-//POST /1.0/accounts/<account_id>/credits	 	 Creates a credit for that account	 201 (CREATED), 400 (BAD_REQUEST), 404 (NOT_FOUND)
-//Semantics:
-//
-//All operations are synchronous
-//JSON Credit GET:
-// {
-//   "accountId" : "theAccountId",
-//   "credits" : [{
-//      "requestedDate" : "2012-05-12T15:34:22.000Z",
-//      "effectiveDate" : "2012-05-12T15:34:22.000Z",
-//      "creditAmount" : 54.32,
-//      "invoiceId" : "theInvoiceId",
-//      "invoiceNumber" : "TheInvoiceNumber",
-//      "reason" : "whatever"
-//   }]
-// }
-//
-//JSON Credit POST:
-// {
-//   "creditAmount" : 54.32,
-//   "reason" : "whatever",
-//   "requestedDate" : "2012-05-12T15:34:22.000Z",
-//   "invoiceId" : "theInvoiceId",
-//   "invoiceNumber" : "TheInvoiceNumber"
-// }
\ No newline at end of file
diff --git a/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestCreditCollectionJson.java b/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestCreditCollectionJson.java
index a1382cd..5a93778 100644
--- a/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestCreditCollectionJson.java
+++ b/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestCreditCollectionJson.java
@@ -47,7 +47,7 @@ public class TestCreditCollectionJson {
         final DateTime requestedDate = new DateTime(DateTimeZone.UTC);
         final DateTime effectiveDate = new DateTime(DateTimeZone.UTC);
         final String reason = UUID.randomUUID().toString();
-        final CreditJson creditJson = new CreditJson(creditAmount, invoiceId, invoiceNumber, requestedDate, effectiveDate, reason);
+        final CreditJson creditJson = new CreditJson(creditAmount, invoiceId, invoiceNumber, requestedDate, effectiveDate, reason, accountId);
 
         final CreditCollectionJson creditCollectionJson = new CreditCollectionJson(accountId, ImmutableList.<CreditJson>of(creditJson));
         Assert.assertEquals(creditCollectionJson.getAccountId(), accountId);
@@ -61,7 +61,8 @@ public class TestCreditCollectionJson {
                 "\"invoiceNumber\":\"" + creditJson.getInvoiceNumber() + "\"," +
                 "\"requestedDate\":\"" + creditJson.getRequestedDate() + "\"," +
                 "\"effectiveDate\":\"" + creditJson.getEffectiveDate() + "\"," +
-                "\"reason\":\"" + creditJson.getReason() + "\"}]}");
+                "\"reason\":\"" + creditJson.getReason() + "\"," +
+                "\"accountId\":\"" + creditJson.getAccountId().toString() + "\"}]}");
 
         final CreditCollectionJson fromJson = mapper.readValue(asJson, CreditCollectionJson.class);
         Assert.assertEquals(fromJson, creditCollectionJson);
diff --git a/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestCreditJson.java b/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestCreditJson.java
index a182d2d..eee0cef 100644
--- a/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestCreditJson.java
+++ b/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestCreditJson.java
@@ -44,13 +44,16 @@ public class TestCreditJson {
         final DateTime requestedDate = new DateTime(DateTimeZone.UTC);
         final DateTime effectiveDate = new DateTime(DateTimeZone.UTC);
         final String reason = UUID.randomUUID().toString();
-        final CreditJson creditJson = new CreditJson(creditAmount, invoiceId, invoiceNumber, requestedDate, effectiveDate, reason);
+        final UUID accountId = UUID.randomUUID();
+
+        final CreditJson creditJson = new CreditJson(creditAmount, invoiceId, invoiceNumber, requestedDate, effectiveDate, reason, accountId);
         Assert.assertEquals(creditJson.getRequestedDate(), requestedDate);
         Assert.assertEquals(creditJson.getEffectiveDate(), effectiveDate);
         Assert.assertEquals(creditJson.getCreditAmount(), creditAmount);
         Assert.assertEquals(creditJson.getInvoiceId(), invoiceId);
         Assert.assertEquals(creditJson.getInvoiceNumber(), invoiceNumber);
         Assert.assertEquals(creditJson.getReason(), reason);
+        Assert.assertEquals(creditJson.getAccountId(), accountId);
 
         final String asJson = mapper.writeValueAsString(creditJson);
         Assert.assertEquals(asJson, "{\"creditAmount\":" + creditJson.getCreditAmount() + "," +
@@ -58,7 +61,8 @@ public class TestCreditJson {
                 "\"invoiceNumber\":\"" + creditJson.getInvoiceNumber() + "\"," +
                 "\"requestedDate\":\"" + creditJson.getRequestedDate() + "\"," +
                 "\"effectiveDate\":\"" + creditJson.getEffectiveDate() + "\"," +
-                "\"reason\":\"" + creditJson.getReason() + "\"}");
+                "\"reason\":\"" + creditJson.getReason() + "\"," +
+                "\"accountId\":\"" + creditJson.getAccountId().toString() + "\"}");
 
         final CreditJson fromJson = mapper.readValue(asJson, CreditJson.class);
         Assert.assertEquals(fromJson, creditJson);