Details
diff --git a/api/src/main/java/com/ning/billing/ErrorCode.java b/api/src/main/java/com/ning/billing/ErrorCode.java
index 10d4d2a..a832a41 100644
--- a/api/src/main/java/com/ning/billing/ErrorCode.java
+++ b/api/src/main/java/com/ning/billing/ErrorCode.java
@@ -191,7 +191,8 @@ public enum ErrorCode {
INVOICE_PAYMENT_NOT_FOUND(4900, "No invoice payment could be found for id %s."),
CHARGE_BACK_AMOUNT_TOO_HIGH(4901, "Tried to charge back %s of a %s payment."),
CHARGE_BACK_AMOUNT_IS_NEGATIVE(4902, "Charge backs for negative amounts are not permitted"),
- CHARGE_BACK_COULD_NOT_FIND_ACCOUNT_ID(4093, "Could not find invoice payment for id %s."),
+ CHARGE_BACK_COULD_NOT_FIND_ACCOUNT_ID(4093, "Could not find chargeback for id %s."),
+ CHARGE_BACK_DOES_NOT_EXIST(4093, "Could not find chargeback for id %s."),
/*
*
* Range 5000: Overdue system
diff --git a/api/src/main/java/com/ning/billing/invoice/api/InvoicePaymentApi.java b/api/src/main/java/com/ning/billing/invoice/api/InvoicePaymentApi.java
index debc1d6..ecc477b 100644
--- a/api/src/main/java/com/ning/billing/invoice/api/InvoicePaymentApi.java
+++ b/api/src/main/java/com/ning/billing/invoice/api/InvoicePaymentApi.java
@@ -55,4 +55,6 @@ public interface InvoicePaymentApi {
public UUID getAccountIdFromInvoicePaymentId(UUID uuid) throws InvoiceApiException;
public List<InvoicePayment> getChargebacksByPaymentAttemptId(UUID paymentAttemptId);
+
+ public InvoicePayment getChargebackById(UUID chargebackId) throws InvoiceApiException;
}
diff --git a/invoice/src/main/java/com/ning/billing/invoice/api/invoice/DefaultInvoicePaymentApi.java b/invoice/src/main/java/com/ning/billing/invoice/api/invoice/DefaultInvoicePaymentApi.java
index 4fec185..2283a39 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/api/invoice/DefaultInvoicePaymentApi.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/api/invoice/DefaultInvoicePaymentApi.java
@@ -108,6 +108,11 @@ public class DefaultInvoicePaymentApi implements InvoicePaymentApi {
}
@Override
+ public InvoicePayment getChargebackById(UUID chargebackId) throws InvoiceApiException {
+ return dao.getChargebackById(chargebackId);
+ }
+
+ @Override
public UUID getAccountIdFromInvoicePaymentId(UUID invoicePaymentId) throws InvoiceApiException {
return dao.getAccountIdFromInvoicePaymentId(invoicePaymentId);
}
diff --git a/invoice/src/main/java/com/ning/billing/invoice/dao/DefaultInvoiceDao.java b/invoice/src/main/java/com/ning/billing/invoice/dao/DefaultInvoiceDao.java
index b567533..e33eced 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/dao/DefaultInvoiceDao.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/dao/DefaultInvoiceDao.java
@@ -307,6 +307,16 @@ public class DefaultInvoiceDao implements InvoiceDao {
}
@Override
+ public InvoicePayment getChargebackById(UUID chargebackId) throws InvoiceApiException {
+ InvoicePayment chargeback = invoicePaymentSqlDao.getById(chargebackId.toString());
+ if (chargeback == null) {
+ throw new InvoiceApiException(ErrorCode.CHARGE_BACK_DOES_NOT_EXIST, chargebackId);
+ } else {
+ return chargeback;
+ }
+ }
+
+ @Override
public void test() {
invoiceSqlDao.test();
}
diff --git a/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceDao.java b/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceDao.java
index 1c7fbc8..870e756 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceDao.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceDao.java
@@ -66,4 +66,6 @@ public interface InvoiceDao {
List<InvoicePayment> getChargebacksByAccountId(final UUID accountId);
List<InvoicePayment> getChargebacksByPaymentAttemptId(final UUID paymentAttemptId);
+
+ InvoicePayment getChargebackById(UUID chargebackId) throws InvoiceApiException;
}
diff --git a/invoice/src/test/java/com/ning/billing/invoice/api/MockInvoicePaymentApi.java b/invoice/src/test/java/com/ning/billing/invoice/api/MockInvoicePaymentApi.java
index 274976d..1bde0c6 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/api/MockInvoicePaymentApi.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/api/MockInvoicePaymentApi.java
@@ -160,4 +160,9 @@ public class MockInvoicePaymentApi implements InvoicePaymentApi
public List<InvoicePayment> getChargebacksByPaymentAttemptId(UUID paymentAttemptId) {
throw new UnsupportedOperationException();
}
+
+ @Override
+ public InvoicePayment getChargebackById(UUID chargebackId) {
+ throw new UnsupportedOperationException();
+ }
}
diff --git a/invoice/src/test/java/com/ning/billing/invoice/dao/MockInvoiceDao.java b/invoice/src/test/java/com/ning/billing/invoice/dao/MockInvoiceDao.java
index 17a28ab..5eadd4e 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/dao/MockInvoiceDao.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/dao/MockInvoiceDao.java
@@ -236,4 +236,9 @@ public class MockInvoiceDao implements InvoiceDao {
public List<InvoicePayment> getChargebacksByPaymentAttemptId(UUID paymentAttemptId) {
throw new UnsupportedOperationException();
}
+
+ @Override
+ public InvoicePayment getChargebackById(UUID chargebackId) throws InvoiceApiException {
+ throw new UnsupportedOperationException();
+ }
}
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 f9e2941..7090040 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
@@ -66,6 +66,22 @@ public class ChargebackResource implements JaxrsResource {
}
@GET
+ @Path("/chargebacks/{chargebackId:" + UUID_PATTERN + "}")
+ @Produces(APPLICATION_JSON)
+ public Response getChargeback(@PathParam("chargebackId") String chargebackId) {
+ try {
+ InvoicePayment chargeback = invoicePaymentApi.getChargebackById(UUID.fromString(chargebackId));
+ ChargebackJson chargebackJson = new ChargebackJson(chargeback);
+
+ return Response.status(Response.Status.OK).entity(chargebackJson).build();
+ } catch (InvoiceApiException e) {
+ final String error = String.format("Failed to locate chargeback for id %s", chargebackId);
+ log.info(error, e);
+ return Response.status(Response.Status.NO_CONTENT).build();
+ }
+ }
+
+ @GET
@Path("/accounts/{accountId:" + UUID_PATTERN + "}/chargebacks")
@Produces(APPLICATION_JSON)
public Response getForAccount(@PathParam("accountId") String accountId) {
@@ -114,7 +130,7 @@ public class ChargebackResource implements JaxrsResource {
try {
invoicePaymentApi.processChargeback(UUID.fromString(json.getPaymentId()), json.getChargebackAmount(),
context.createContext(createdBy, reason, comment));
- return uriBuilder.buildResponse(ChargebackResource.class, "createChargeback", json.getPaymentId());
+ return uriBuilder.buildResponse(ChargebackResource.class, "getChargeback", json.getPaymentId());
} catch (InvoiceApiException e) {
final String error = String.format("Failed to create chargeback %s", json);
log.info(error, e);