killbill-memoizeit

Details

diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/ChargebackJson.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/ChargebackJson.java
index 2c6cdad..ae35667 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/ChargebackJson.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/ChargebackJson.java
@@ -32,6 +32,7 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 
 public class ChargebackJson extends JsonBase {
 
+    private final String chargebackId;
     private final String accountId;
     private final DateTime requestedDate;
     private final DateTime effectiveDate;
@@ -40,7 +41,8 @@ public class ChargebackJson extends JsonBase {
     private final String currency;
 
     @JsonCreator
-    public ChargebackJson(@JsonProperty("accountId") final String accountId,
+    public ChargebackJson(@JsonProperty("chargebackId") final String chargebackId,
+                          @JsonProperty("accountId") final String accountId,
                           @JsonProperty("requestedDate") final DateTime requestedDate,
                           @JsonProperty("effectiveDate") final DateTime effectiveDate,
                           @JsonProperty("amount") final BigDecimal chargebackAmount,
@@ -48,6 +50,7 @@ public class ChargebackJson extends JsonBase {
                           @JsonProperty("currency") final String currency,
                           @JsonProperty("auditLogs") @Nullable final List<AuditLogJson> auditLogs) {
         super(auditLogs);
+        this.chargebackId = chargebackId;
         this.accountId = accountId;
         this.requestedDate = requestedDate;
         this.effectiveDate = effectiveDate;
@@ -61,8 +64,12 @@ public class ChargebackJson extends JsonBase {
     }
 
     public ChargebackJson(final UUID accountId, final InvoicePayment chargeback, @Nullable final List<AuditLog> auditLogs) {
-        this(accountId.toString(), chargeback.getPaymentDate(), chargeback.getPaymentDate(), chargeback.getAmount().negate(),
-             chargeback.getPaymentId().toString(), chargeback.getCurrency().toString(), toAuditLogJson(auditLogs));
+        this(chargeback.getId().toString(), accountId.toString(), chargeback.getPaymentDate(), chargeback.getPaymentDate(),
+               chargeback.getAmount().negate(), chargeback.getPaymentId().toString(), chargeback.getCurrency().toString(), toAuditLogJson(auditLogs));
+    }
+
+    public String getChargebackId() {
+        return chargebackId;
     }
 
     public String getAccountId() {
@@ -100,6 +107,9 @@ public class ChargebackJson extends JsonBase {
 
         final ChargebackJson that = (ChargebackJson) o;
 
+        if (chargebackId != null ? !chargebackId.equals(that.chargebackId) : that.chargebackId != null) {
+            return false;
+        }
         if (!((amount == null && that.amount == null) ||
               (amount != null && that.amount != null && amount.compareTo(that.amount) == 0))) {
             return false;
@@ -121,16 +131,16 @@ public class ChargebackJson extends JsonBase {
               (requestedDate != null && that.requestedDate != null && requestedDate.compareTo(that.requestedDate) == 0))) {
             return false;
         }
-
         return true;
     }
 
     @Override
     public int hashCode() {
-        int result = requestedDate != null ? requestedDate.hashCode() : 0;
+        int result = chargebackId != null ? chargebackId.hashCode() : 0;
+        result = 31 * result + (accountId != null ? accountId.hashCode() : 0);
+        result = 31 * result + (requestedDate != null ? requestedDate.hashCode() : 0);
         result = 31 * result + (effectiveDate != null ? effectiveDate.hashCode() : 0);
         result = 31 * result + (amount != null ? amount.hashCode() : 0);
-        result = 31 * result + (accountId != null ? accountId.hashCode() : 0);
         result = 31 * result + (paymentId != null ? paymentId.hashCode() : 0);
         result = 31 * result + (currency != null ? currency.hashCode() : 0);
         return result;
@@ -139,7 +149,8 @@ public class ChargebackJson extends JsonBase {
     @Override
     public String toString() {
         return "ChargebackJson{" +
-               "accountId='" + accountId + '\'' +
+               "chargebackId='" + chargebackId + '\'' +
+               ", accountId='" + accountId + '\'' +
                ", requestedDate=" + requestedDate +
                ", effectiveDate=" + effectiveDate +
                ", amount=" + amount +
diff --git a/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestChargebackJson.java b/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestChargebackJson.java
index 4caee20..2a4c19e 100644
--- a/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestChargebackJson.java
+++ b/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestChargebackJson.java
@@ -36,12 +36,14 @@ public class TestChargebackJson extends JaxrsTestSuiteNoDB {
         final DateTime requestedDate = new DateTime(DateTimeZone.UTC);
         final DateTime effectiveDate = new DateTime(DateTimeZone.UTC);
         final BigDecimal chargebackAmount = BigDecimal.TEN;
+        final String chargebackId = UUID.randomUUID().toString();
         final String accountId = UUID.randomUUID().toString();
         final String paymentId = UUID.randomUUID().toString();
         final String currency = "USD";
         final List<AuditLogJson> auditLogs = createAuditLogsJson(clock.getUTCNow());
-        final ChargebackJson chargebackJson = new ChargebackJson(accountId, requestedDate, effectiveDate, chargebackAmount, paymentId,
-                                                                 currency, auditLogs);
+        final ChargebackJson chargebackJson = new ChargebackJson(chargebackId, accountId, requestedDate, effectiveDate, chargebackAmount,
+                                                                   paymentId, currency, auditLogs);
+        Assert.assertEquals(chargebackJson.getChargebackId(), chargebackId);
         Assert.assertEquals(chargebackJson.getRequestedDate(), requestedDate);
         Assert.assertEquals(chargebackJson.getEffectiveDate(), effectiveDate);
         Assert.assertEquals(chargebackJson.getAmount(), chargebackAmount);
diff --git a/server/src/test/java/com/ning/billing/jaxrs/KillbillClient.java b/server/src/test/java/com/ning/billing/jaxrs/KillbillClient.java
index 0e257ed..40336e1 100644
--- a/server/src/test/java/com/ning/billing/jaxrs/KillbillClient.java
+++ b/server/src/test/java/com/ning/billing/jaxrs/KillbillClient.java
@@ -724,7 +724,7 @@ public abstract class KillbillClient extends GuicyKillbillTestSuiteWithEmbeddedD
     //
 
     protected ChargebackJson createChargeBack(final String paymentId, final BigDecimal chargebackAmount) throws IOException {
-        final ChargebackJson input = new ChargebackJson(null, null, null, chargebackAmount, paymentId, null, null);
+        final ChargebackJson input = new ChargebackJson(null, null, null, null, chargebackAmount, paymentId, null, null);
         final String jsonInput = mapper.writeValueAsString(input);
 
         // Create the chargeback
diff --git a/server/src/test/java/com/ning/billing/jaxrs/TestChargeback.java b/server/src/test/java/com/ning/billing/jaxrs/TestChargeback.java
index c0502e1..81a6f81 100644
--- a/server/src/test/java/com/ning/billing/jaxrs/TestChargeback.java
+++ b/server/src/test/java/com/ning/billing/jaxrs/TestChargeback.java
@@ -39,7 +39,6 @@ import com.ning.billing.jaxrs.resources.JaxrsResource;
 import com.ning.http.client.Response;
 
 import com.fasterxml.jackson.core.type.TypeReference;
-import com.google.common.collect.ImmutableMap;
 
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNotNull;
@@ -59,7 +58,7 @@ public class TestChargeback extends TestJaxrsBase {
         final PaymentJson payment = createAccountWithInvoiceAndPayment();
 
         // We get a 249.95 payment so we do 4 chargeback and then the fifth should fail
-        final ChargebackJson input = new ChargebackJson(null, null, null, new BigDecimal("50.00"), payment.getPaymentId(), null, null);
+        final ChargebackJson input = new ChargebackJson(null, null, null, null, new BigDecimal("50.00"), payment.getPaymentId(), null, null);
         final String jsonInput = mapper.writeValueAsString(input);
 
         //
@@ -111,9 +110,9 @@ public class TestChargeback extends TestJaxrsBase {
 
     @Test(groups = "slow")
     public void testInvoicePaymentDoesNotExist() throws Exception {
-        final ChargebackJson input = new ChargebackJson(null, new DateTime(DateTimeZone.UTC), new DateTime(DateTimeZone.UTC),
-                                                        BigDecimal.TEN, UUID.randomUUID().toString(),
-                                                        null, null);
+        final ChargebackJson input = new ChargebackJson(null, null, new DateTime(DateTimeZone.UTC),
+                                                          new DateTime(DateTimeZone.UTC), BigDecimal.TEN,
+                                                          UUID.randomUUID().toString(), null, null);
         final String jsonInput = mapper.writeValueAsString(input);
 
         // Try to create the chargeback
@@ -123,7 +122,7 @@ public class TestChargeback extends TestJaxrsBase {
 
     @Test(groups = "slow")
     public void testBadRequest() throws Exception {
-        final ChargebackJson input = new ChargebackJson(null, null, null, null, null, null, null);
+        final ChargebackJson input = new ChargebackJson(null, null, null, null, null, null, null, null);
         final String jsonInput = mapper.writeValueAsString(input);
 
         // Try to create the chargeback
@@ -150,7 +149,7 @@ public class TestChargeback extends TestJaxrsBase {
     }
 
     private void createAndVerifyChargeback(final PaymentJson payment) throws IOException {
-        final ChargebackJson input = new ChargebackJson(null, null, null, BigDecimal.TEN, payment.getPaymentId(), null, null);
+        final ChargebackJson input = new ChargebackJson(null, null, null, null, BigDecimal.TEN, payment.getPaymentId(), null, null);
         final String jsonInput = mapper.writeValueAsString(input);
 
         // Create the chargeback