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 5c87754..f4091a8 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
@@ -159,7 +159,7 @@ public class AccountTimelineJson {
final List<ChargebackJson> chargebacks = new ArrayList<ChargebackJson>();
for (final InvoicePayment chargeback : chargebacksByPayment.get(payment.getId())) {
final List<AuditLog> auditLogs = chargebacksAuditLogs.get(chargeback.getId());
- chargebacks.add(new ChargebackJson(chargeback, auditLogs));
+ chargebacks.add(new ChargebackJson(payment.getAccountId(), chargeback, auditLogs));
}
final int nbOfPaymentAttempts = payment.getAttempts().size();
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 d7b3c39..2c6cdad 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
@@ -18,6 +18,7 @@ package com.ning.billing.jaxrs.json;
import java.math.BigDecimal;
import java.util.List;
+import java.util.UUID;
import javax.annotation.Nullable;
@@ -31,6 +32,7 @@ import com.fasterxml.jackson.annotation.JsonProperty;
public class ChargebackJson extends JsonBase {
+ private final String accountId;
private final DateTime requestedDate;
private final DateTime effectiveDate;
private final BigDecimal amount;
@@ -38,13 +40,15 @@ public class ChargebackJson extends JsonBase {
private final String currency;
@JsonCreator
- public ChargebackJson(@JsonProperty("requestedDate") final DateTime requestedDate,
+ public ChargebackJson(@JsonProperty("accountId") final String accountId,
+ @JsonProperty("requestedDate") final DateTime requestedDate,
@JsonProperty("effectiveDate") final DateTime effectiveDate,
@JsonProperty("amount") final BigDecimal chargebackAmount,
@JsonProperty("paymentId") final String paymentId,
@JsonProperty("currency") final String currency,
@JsonProperty("auditLogs") @Nullable final List<AuditLogJson> auditLogs) {
super(auditLogs);
+ this.accountId = accountId;
this.requestedDate = requestedDate;
this.effectiveDate = effectiveDate;
this.amount = chargebackAmount;
@@ -52,15 +56,19 @@ public class ChargebackJson extends JsonBase {
this.currency = currency;
}
- public ChargebackJson(final InvoicePayment chargeback) {
- this(chargeback, null);
+ public ChargebackJson(final UUID accountId, final InvoicePayment chargeback) {
+ this(accountId, chargeback, null);
}
- public ChargebackJson(final InvoicePayment chargeback, @Nullable final List<AuditLog> auditLogs) {
- this(chargeback.getPaymentDate(), chargeback.getPaymentDate(), chargeback.getAmount().negate(),
+ 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));
}
+ public String getAccountId() {
+ return accountId;
+ }
+
public DateTime getRequestedDate() {
return requestedDate;
}
@@ -100,6 +108,9 @@ public class ChargebackJson extends JsonBase {
(effectiveDate != null && that.effectiveDate != null && effectiveDate.compareTo(that.effectiveDate) == 0))) {
return false;
}
+ if (accountId != null ? !accountId.equals(that.accountId) : that.accountId != null) {
+ return false;
+ }
if (paymentId != null ? !paymentId.equals(that.paymentId) : that.paymentId != null) {
return false;
}
@@ -119,8 +130,21 @@ public class ChargebackJson extends JsonBase {
int 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;
}
+
+ @Override
+ public String toString() {
+ return "ChargebackJson{" +
+ "accountId='" + accountId + '\'' +
+ ", requestedDate=" + requestedDate +
+ ", effectiveDate=" + effectiveDate +
+ ", amount=" + amount +
+ ", paymentId='" + paymentId + '\'' +
+ ", currency='" + 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 c9faa12..db66db3 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
@@ -58,7 +58,6 @@ import com.ning.billing.jaxrs.json.AccountEmailJson;
import com.ning.billing.jaxrs.json.AccountJson;
import com.ning.billing.jaxrs.json.AccountTimelineJson;
import com.ning.billing.jaxrs.json.BundleJson;
-import com.ning.billing.jaxrs.json.ChargebackCollectionJson;
import com.ning.billing.jaxrs.json.ChargebackJson;
import com.ning.billing.jaxrs.json.CustomFieldJson;
import com.ning.billing.jaxrs.json.InvoiceEmailJson;
@@ -451,16 +450,15 @@ public class AccountResource extends JaxRsResourceBase {
@GET
@Path("/{accountId:" + UUID_PATTERN + "}/" + CHARGEBACKS)
@Produces(APPLICATION_JSON)
- public Response getChargebacksForAccount(@PathParam("accountId") final String accountId,
+ public Response getChargebacksForAccount(@PathParam("accountId") final String accountIdStr,
@javax.ws.rs.core.Context final HttpServletRequest request) {
- final List<InvoicePayment> chargebacks = invoicePaymentApi.getChargebacksByAccountId(UUID.fromString(accountId), context.createContext(request));
+ final UUID accountId = UUID.fromString(accountIdStr);
+ final List<InvoicePayment> chargebacks = invoicePaymentApi.getChargebacksByAccountId(accountId, context.createContext(request));
final List<ChargebackJson> chargebacksJson = new ArrayList<ChargebackJson>();
for (final InvoicePayment chargeback : chargebacks) {
- chargebacksJson.add(new ChargebackJson(chargeback));
+ chargebacksJson.add(new ChargebackJson(accountId, chargeback));
}
-
- final ChargebackCollectionJson json = new ChargebackCollectionJson(accountId, chargebacksJson);
- return Response.status(Response.Status.OK).entity(json).build();
+ return Response.status(Response.Status.OK).entity(chargebacksJson).build();
}
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/ChargebackResource.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/ChargebackResource.java
index 6b1bd9f..b52ddce 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/ChargebackResource.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/ChargebackResource.java
@@ -42,6 +42,7 @@ import com.ning.billing.util.api.AuditUserApi;
import com.ning.billing.util.api.CustomFieldUserApi;
import com.ning.billing.util.api.TagUserApi;
import com.ning.billing.util.callcontext.CallContext;
+import com.ning.billing.util.callcontext.TenantContext;
import com.google.inject.Inject;
import com.google.inject.Singleton;
@@ -72,8 +73,10 @@ public class ChargebackResource extends JaxRsResourceBase {
@Produces(APPLICATION_JSON)
public Response getChargeback(@PathParam("chargebackId") final String chargebackId,
@javax.ws.rs.core.Context final HttpServletRequest request) throws InvoiceApiException {
- final InvoicePayment chargeback = invoicePaymentApi.getChargebackById(UUID.fromString(chargebackId), context.createContext(request));
- final ChargebackJson chargebackJson = new ChargebackJson(chargeback);
+ final TenantContext tenantContext = context.createContext(request);
+ final InvoicePayment chargeback = invoicePaymentApi.getChargebackById(UUID.fromString(chargebackId), tenantContext);
+ final UUID accountId = invoicePaymentApi.getAccountIdFromInvoicePaymentId(chargeback.getId(), tenantContext);
+ final ChargebackJson chargebackJson = new ChargebackJson(accountId, chargeback);
return Response.status(Response.Status.OK).entity(chargebackJson).build();
}
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/PaymentResource.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/PaymentResource.java
index 25ce694..01a17f1 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/PaymentResource.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/PaymentResource.java
@@ -47,7 +47,6 @@ import com.ning.billing.clock.Clock;
import com.ning.billing.invoice.api.InvoiceApiException;
import com.ning.billing.invoice.api.InvoicePayment;
import com.ning.billing.invoice.api.InvoicePaymentApi;
-import com.ning.billing.jaxrs.json.ChargebackCollectionJson;
import com.ning.billing.jaxrs.json.ChargebackJson;
import com.ning.billing.jaxrs.json.CustomFieldJson;
import com.ning.billing.jaxrs.json.InvoiceItemJsonSimple;
@@ -118,7 +117,7 @@ public class PaymentResource extends JaxRsResourceBase {
final List<ChargebackJson> chargebacks = new ArrayList<ChargebackJson>();
for (final InvoicePayment chargeback : invoicePaymentApi.getChargebacksByPaymentId(paymentId, tenantContext)) {
- chargebacks.add(new ChargebackJson(chargeback));
+ chargebacks.add(new ChargebackJson(payment.getAccountId(), chargeback));
}
final int nbOfPaymentAttempts = payment.getAttempts().size();
@@ -172,14 +171,12 @@ public class PaymentResource extends JaxRsResourceBase {
}
final UUID invoicePaymentId = chargebacks.get(0).getId();
- final String accountId = invoicePaymentApi.getAccountIdFromInvoicePaymentId(invoicePaymentId, tenantContext).toString();
+ final UUID accountId = invoicePaymentApi.getAccountIdFromInvoicePaymentId(invoicePaymentId, tenantContext);
final List<ChargebackJson> chargebacksJson = new ArrayList<ChargebackJson>();
for (final InvoicePayment chargeback : chargebacks) {
- chargebacksJson.add(new ChargebackJson(chargeback));
+ chargebacksJson.add(new ChargebackJson(accountId, chargeback));
}
- final ChargebackCollectionJson json = new ChargebackCollectionJson(accountId, chargebacksJson);
-
- return Response.status(Response.Status.OK).entity(json).build();
+ return Response.status(Response.Status.OK).entity(chargebacksJson).build();
}
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 e40ae9b..4caee20 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,10 +36,11 @@ 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 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(requestedDate, effectiveDate, chargebackAmount, paymentId,
+ final ChargebackJson chargebackJson = new ChargebackJson(accountId, requestedDate, effectiveDate, chargebackAmount, paymentId,
currency, auditLogs);
Assert.assertEquals(chargebackJson.getRequestedDate(), requestedDate);
Assert.assertEquals(chargebackJson.getEffectiveDate(), effectiveDate);
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 227d2d9..ab8dc2c 100644
--- a/server/src/test/java/com/ning/billing/jaxrs/KillbillClient.java
+++ b/server/src/test/java/com/ning/billing/jaxrs/KillbillClient.java
@@ -726,7 +726,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, chargebackAmount, paymentId, null, null);
+ final ChargebackJson input = new ChargebackJson(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 7729321..4b92c61 100644
--- a/server/src/test/java/com/ning/billing/jaxrs/TestChargeback.java
+++ b/server/src/test/java/com/ning/billing/jaxrs/TestChargeback.java
@@ -31,7 +31,6 @@ import org.testng.annotations.Test;
import com.ning.billing.catalog.api.BillingPeriod;
import com.ning.billing.catalog.api.ProductCategory;
import com.ning.billing.jaxrs.json.AccountJson;
-import com.ning.billing.jaxrs.json.ChargebackCollectionJson;
import com.ning.billing.jaxrs.json.ChargebackJson;
import com.ning.billing.jaxrs.json.InvoiceJsonSimple;
import com.ning.billing.jaxrs.json.PaymentJsonSimple;
@@ -60,7 +59,7 @@ public class TestChargeback extends TestJaxrsBase {
final PaymentJsonSimple 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, new BigDecimal("50.00"), payment.getPaymentId(), null, null);
+ final ChargebackJson input = new ChargebackJson(null, null, null, new BigDecimal("50.00"), payment.getPaymentId(), null, null);
final String jsonInput = mapper.writeValueAsString(input);
//
@@ -76,21 +75,21 @@ public class TestChargeback extends TestJaxrsBase {
assertEquals(response.getStatusCode(), javax.ws.rs.core.Response.Status.BAD_REQUEST.getStatusCode(), response.getResponseBody());
// Find the chargeback by account
- response = doGet(JaxrsResource.ACCOUNTS_PATH + "/" + payment.getAccountId() + "/" +JaxrsResource.CHARGEBACKS, DEFAULT_EMPTY_QUERY, DEFAULT_HTTP_TIMEOUT_SEC);
+ response = doGet(JaxrsResource.ACCOUNTS_PATH + "/" + payment.getAccountId() + "/" + JaxrsResource.CHARGEBACKS, DEFAULT_EMPTY_QUERY, DEFAULT_HTTP_TIMEOUT_SEC);
assertEquals(response.getStatusCode(), javax.ws.rs.core.Response.Status.OK.getStatusCode());
- ChargebackCollectionJson objFromJson = mapper.readValue(response.getResponseBody(), ChargebackCollectionJson.class);
- assertEquals(objFromJson.getChargebacks().size(), 4);
- for (int i = 0; i < objFromJson.getChargebacks().size(); i++) {
- final ChargebackJson chargeBack = objFromJson.getChargebacks().get(i);
+ List<ChargebackJson> chargebacks = mapper.readValue(response.getResponseBody(), new TypeReference<List<ChargebackJson>>() {});
+ assertEquals(chargebacks.size(), 4);
+ for (int i = 0; i < chargebacks.size(); i++) {
+ final ChargebackJson chargeBack = chargebacks.get(i);
assertTrue(chargeBack.getAmount().compareTo(input.getAmount()) == 0);
assertEquals(chargeBack.getPaymentId(), input.getPaymentId());
}
// Find the chargeback by payment
- response = doGet(JaxrsResource.PAYMENTS_PATH + "/" + payment.getPaymentId() + "/" +JaxrsResource.CHARGEBACKS, DEFAULT_EMPTY_QUERY, DEFAULT_HTTP_TIMEOUT_SEC);
+ response = doGet(JaxrsResource.PAYMENTS_PATH + "/" + payment.getPaymentId() + "/" + JaxrsResource.CHARGEBACKS, DEFAULT_EMPTY_QUERY, DEFAULT_HTTP_TIMEOUT_SEC);
assertEquals(response.getStatusCode(), javax.ws.rs.core.Response.Status.OK.getStatusCode());
- objFromJson = mapper.readValue(response.getResponseBody(), ChargebackCollectionJson.class);
- assertEquals(objFromJson.getChargebacks().size(), 4);
+ chargebacks = mapper.readValue(response.getResponseBody(), new TypeReference<List<ChargebackJson>>() {});
+ assertEquals(chargebacks.size(), 4);
}
@Test(groups = "slow")
@@ -112,7 +111,7 @@ public class TestChargeback extends TestJaxrsBase {
@Test(groups = "slow")
public void testInvoicePaymentDoesNotExist() throws Exception {
- final ChargebackJson input = new ChargebackJson(new DateTime(DateTimeZone.UTC), new DateTime(DateTimeZone.UTC),
+ final ChargebackJson input = new ChargebackJson(null, new DateTime(DateTimeZone.UTC), new DateTime(DateTimeZone.UTC),
BigDecimal.TEN, UUID.randomUUID().toString(),
null, null);
final String jsonInput = mapper.writeValueAsString(input);
@@ -124,7 +123,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);
+ final ChargebackJson input = new ChargebackJson(null, null, null, null, null, null, null);
final String jsonInput = mapper.writeValueAsString(input);
// Try to create the chargeback
@@ -135,24 +134,23 @@ public class TestChargeback extends TestJaxrsBase {
@Test(groups = "slow")
public void testNoChargebackForAccount() throws Exception {
final String accountId = UUID.randomUUID().toString();
- final Response response = doGet(JaxrsResource.ACCOUNTS_PATH + "/" + accountId + "/" +JaxrsResource.CHARGEBACKS, DEFAULT_EMPTY_QUERY, DEFAULT_HTTP_TIMEOUT_SEC);
+ final Response response = doGet(JaxrsResource.ACCOUNTS_PATH + "/" + accountId + "/" + JaxrsResource.CHARGEBACKS, DEFAULT_EMPTY_QUERY, DEFAULT_HTTP_TIMEOUT_SEC);
assertEquals(response.getStatusCode(), Status.OK.getStatusCode(), response.getResponseBody());
- final ChargebackCollectionJson chargebackCollectionJson = mapper.readValue(response.getResponseBody(), ChargebackCollectionJson.class);
- Assert.assertEquals(chargebackCollectionJson.getAccountId(), accountId);
- Assert.assertEquals(chargebackCollectionJson.getChargebacks().size(), 0);
+ final List<ChargebackJson> chargebackJson = mapper.readValue(response.getResponseBody(), new TypeReference<List<ChargebackJson>>() {});
+ Assert.assertEquals(chargebackJson.size(), 0);
}
@Test(groups = "slow")
public void testNoChargebackForPayment() throws Exception {
final String paymentId = UUID.randomUUID().toString();
- final Response response = doGet(JaxrsResource.PAYMENTS_PATH + "/" + paymentId + "/" +JaxrsResource.CHARGEBACKS, DEFAULT_EMPTY_QUERY, DEFAULT_HTTP_TIMEOUT_SEC);
+ final Response response = doGet(JaxrsResource.PAYMENTS_PATH + "/" + paymentId + "/" + JaxrsResource.CHARGEBACKS, DEFAULT_EMPTY_QUERY, DEFAULT_HTTP_TIMEOUT_SEC);
// STEPH needs to fix that we get 200 instaed of 204 although stepping through code, i see we do return NO_CONTENT. mistery that needs to be solved!!!!
//assertEquals(response.getStatusCode(),Status.NO_CONTENT.getStatusCode(), response.getResponseBody());
}
private void createAndVerifyChargeback(final PaymentJsonSimple payment) throws IOException {
- final ChargebackJson input = new ChargebackJson(null, null, BigDecimal.TEN, payment.getPaymentId(), null, null);
+ final ChargebackJson input = new ChargebackJson(null, null, null, BigDecimal.TEN, payment.getPaymentId(), null, null);
final String jsonInput = mapper.writeValueAsString(input);
// Create the chargeback
@@ -166,19 +164,19 @@ public class TestChargeback extends TestJaxrsBase {
verifySingleChargebackResponse(response, input);
// Find the chargeback by account
- response = doGet(JaxrsResource.ACCOUNTS_PATH + "/" + payment.getAccountId() + "/" +JaxrsResource.CHARGEBACKS, DEFAULT_EMPTY_QUERY, DEFAULT_HTTP_TIMEOUT_SEC);
+ response = doGet(JaxrsResource.ACCOUNTS_PATH + "/" + payment.getAccountId() + "/" + JaxrsResource.CHARGEBACKS, DEFAULT_EMPTY_QUERY, DEFAULT_HTTP_TIMEOUT_SEC);
verifyCollectionChargebackResponse(response, input);
// Find the chargeback by payment
- response = doGet(JaxrsResource.PAYMENTS_PATH + "/" + payment.getPaymentId() + "/" +JaxrsResource.CHARGEBACKS, DEFAULT_EMPTY_QUERY, DEFAULT_HTTP_TIMEOUT_SEC);
+ response = doGet(JaxrsResource.PAYMENTS_PATH + "/" + payment.getPaymentId() + "/" + JaxrsResource.CHARGEBACKS, DEFAULT_EMPTY_QUERY, DEFAULT_HTTP_TIMEOUT_SEC);
verifyCollectionChargebackResponse(response, input);
}
private void verifyCollectionChargebackResponse(final Response response, final ChargebackJson input) throws IOException {
assertEquals(response.getStatusCode(), Status.OK.getStatusCode());
- final ChargebackCollectionJson objFromJson = mapper.readValue(response.getResponseBody(), ChargebackCollectionJson.class);
- assertEquals(objFromJson.getChargebacks().size(), 1);
- final ChargebackJson chargeBack = objFromJson.getChargebacks().get(0);
+ final List<ChargebackJson> chargebackJson = mapper.readValue(response.getResponseBody(), new TypeReference<List<ChargebackJson>>() {});
+ assertEquals(chargebackJson.size(), 1);
+ final ChargebackJson chargeBack = chargebackJson.get(0);
assertTrue(chargeBack.getAmount().compareTo(input.getAmount()) == 0);
assertEquals(chargeBack.getPaymentId(), input.getPaymentId());
}