Details
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/InvoiceItemJsonSimple.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/InvoiceItemJsonSimple.java
index bf09acf..a4151b1 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/InvoiceItemJsonSimple.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/InvoiceItemJsonSimple.java
@@ -32,6 +32,7 @@ public class InvoiceItemJsonSimple extends JsonBase {
private final String invoiceItemId;
private final String invoiceId;
+ private final String linkedInvoiceItemId;
private final String accountId;
private final String bundleId;
private final String subscriptionId;
@@ -45,6 +46,7 @@ public class InvoiceItemJsonSimple extends JsonBase {
public InvoiceItemJsonSimple(@JsonProperty("invoiceItemId") final String invoiceItemId,
@JsonProperty("invoiceId") final String invoiceId,
+ @JsonProperty("linkedInvoiceItemId") final String linkedInvoiceItemId,
@JsonProperty("accountId") final String accountId,
@JsonProperty("bundleId") final String bundleId,
@JsonProperty("subscriptionId") final String subscriptionId,
@@ -59,6 +61,7 @@ public class InvoiceItemJsonSimple extends JsonBase {
super(auditLogs);
this.invoiceItemId = invoiceItemId;
this.invoiceId = invoiceId;
+ this.linkedInvoiceItemId = linkedInvoiceItemId;
this.accountId = accountId;
this.bundleId = bundleId;
this.subscriptionId = subscriptionId;
@@ -72,8 +75,8 @@ public class InvoiceItemJsonSimple extends JsonBase {
}
public InvoiceItemJsonSimple(final InvoiceItem item) {
- this(toString(item.getId()), toString(item.getInvoiceId()), toString(item.getAccountId()),
- toString(item.getBundleId()), toString(item.getSubscriptionId()),
+ this(toString(item.getId()), toString(item.getInvoiceId()), toString(item.getLinkedItemId()),
+ toString(item.getAccountId()), toString(item.getBundleId()), toString(item.getSubscriptionId()),
item.getPlanName(), item.getPhaseName(), item.getDescription(), item.getStartDate(), item.getEndDate(),
item.getAmount(), item.getCurrency(), null);
}
@@ -86,6 +89,10 @@ public class InvoiceItemJsonSimple extends JsonBase {
return invoiceId;
}
+ public String getLinkedInvoiceItemId() {
+ return linkedInvoiceItemId;
+ }
+
public String getAccountId() {
return accountId;
}
@@ -127,6 +134,27 @@ public class InvoiceItemJsonSimple extends JsonBase {
}
@Override
+ public String toString() {
+ final StringBuilder sb = new StringBuilder();
+ sb.append("InvoiceItemJsonSimple");
+ sb.append("{invoiceItemId='").append(invoiceItemId).append('\'');
+ sb.append(", invoiceId='").append(invoiceId).append('\'');
+ sb.append(", linkedInvoiceItemId='").append(linkedInvoiceItemId).append('\'');
+ sb.append(", accountId='").append(accountId).append('\'');
+ sb.append(", bundleId='").append(bundleId).append('\'');
+ sb.append(", subscriptionId='").append(subscriptionId).append('\'');
+ sb.append(", planName='").append(planName).append('\'');
+ sb.append(", phaseName='").append(phaseName).append('\'');
+ sb.append(", description='").append(description).append('\'');
+ sb.append(", startDate=").append(startDate);
+ sb.append(", endDate=").append(endDate);
+ sb.append(", amount=").append(amount);
+ sb.append(", currency=").append(currency);
+ sb.append('}');
+ return sb.toString();
+ }
+
+ @Override
public boolean equals(final Object o) {
if (this == o) {
return true;
@@ -163,6 +191,9 @@ public class InvoiceItemJsonSimple extends JsonBase {
if (invoiceId != null ? !invoiceId.equals(that.invoiceId) : that.invoiceId != null) {
return false;
}
+ if (linkedInvoiceItemId != null ? !linkedInvoiceItemId.equals(that.linkedInvoiceItemId) : that.linkedInvoiceItemId != null) {
+ return false;
+ }
if (phaseName != null ? !phaseName.equals(that.phaseName) : that.phaseName != null) {
return false;
}
@@ -184,6 +215,7 @@ public class InvoiceItemJsonSimple extends JsonBase {
public int hashCode() {
int result = invoiceId != null ? invoiceId.hashCode() : 0;
result = 31 * result + (invoiceItemId != null ? invoiceItemId.hashCode() : 0);
+ result = 31 * result + (linkedInvoiceItemId != null ? linkedInvoiceItemId.hashCode() : 0);
result = 31 * result + (accountId != null ? accountId.hashCode() : 0);
result = 31 * result + (bundleId != null ? bundleId.hashCode() : 0);
result = 31 * result + (subscriptionId != null ? subscriptionId.hashCode() : 0);
diff --git a/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestInvoiceItemJsonSimple.java b/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestInvoiceItemJsonSimple.java
index a182119..09808ac 100644
--- a/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestInvoiceItemJsonSimple.java
+++ b/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestInvoiceItemJsonSimple.java
@@ -39,6 +39,7 @@ public class TestInvoiceItemJsonSimple extends JaxrsTestSuite {
public void testJson() throws Exception {
final String invoiceItemId = UUID.randomUUID().toString();
final String invoiceId = UUID.randomUUID().toString();
+ final String linkedInvoiceItemId = UUID.randomUUID().toString();
final String accountId = UUID.randomUUID().toString();
final String bundleId = UUID.randomUUID().toString();
final String subscriptionId = UUID.randomUUID().toString();
@@ -50,11 +51,12 @@ public class TestInvoiceItemJsonSimple extends JaxrsTestSuite {
final BigDecimal amount = BigDecimal.TEN;
final Currency currency = Currency.MXN;
final List<AuditLogJson> auditLogs = createAuditLogsJson();
- final InvoiceItemJsonSimple invoiceItemJsonSimple = new InvoiceItemJsonSimple(invoiceItemId, invoiceId, accountId, bundleId, subscriptionId,
- planName, phaseName, description, startDate, endDate,
- amount, currency, auditLogs);
+ final InvoiceItemJsonSimple invoiceItemJsonSimple = new InvoiceItemJsonSimple(invoiceItemId, invoiceId, linkedInvoiceItemId, accountId,
+ bundleId, subscriptionId, planName, phaseName, description,
+ startDate, endDate, amount, currency, auditLogs);
Assert.assertEquals(invoiceItemJsonSimple.getInvoiceItemId(), invoiceItemId);
Assert.assertEquals(invoiceItemJsonSimple.getInvoiceId(), invoiceId);
+ Assert.assertEquals(invoiceItemJsonSimple.getLinkedInvoiceItemId(), linkedInvoiceItemId);
Assert.assertEquals(invoiceItemJsonSimple.getAccountId(), accountId);
Assert.assertEquals(invoiceItemJsonSimple.getBundleId(), bundleId);
Assert.assertEquals(invoiceItemJsonSimple.getSubscriptionId(), subscriptionId);
@@ -77,6 +79,7 @@ public class TestInvoiceItemJsonSimple extends JaxrsTestSuite {
final InvoiceItem invoiceItem = Mockito.mock(InvoiceItem.class);
Mockito.when(invoiceItem.getId()).thenReturn(UUID.randomUUID());
Mockito.when(invoiceItem.getInvoiceId()).thenReturn(UUID.randomUUID());
+ Mockito.when(invoiceItem.getLinkedItemId()).thenReturn(UUID.randomUUID());
Mockito.when(invoiceItem.getAccountId()).thenReturn(UUID.randomUUID());
Mockito.when(invoiceItem.getBundleId()).thenReturn(UUID.randomUUID());
Mockito.when(invoiceItem.getSubscriptionId()).thenReturn(UUID.randomUUID());
@@ -91,6 +94,7 @@ public class TestInvoiceItemJsonSimple extends JaxrsTestSuite {
final InvoiceItemJsonSimple invoiceItemJsonSimple = new InvoiceItemJsonSimple(invoiceItem);
Assert.assertEquals(invoiceItemJsonSimple.getInvoiceItemId(), invoiceItem.getId().toString());
Assert.assertEquals(invoiceItemJsonSimple.getInvoiceId(), invoiceItem.getInvoiceId().toString());
+ Assert.assertEquals(invoiceItemJsonSimple.getLinkedInvoiceItemId(), invoiceItem.getLinkedItemId().toString());
Assert.assertEquals(invoiceItemJsonSimple.getAccountId(), invoiceItem.getAccountId().toString());
Assert.assertEquals(invoiceItemJsonSimple.getBundleId(), invoiceItem.getBundleId().toString());
Assert.assertEquals(invoiceItemJsonSimple.getSubscriptionId(), invoiceItem.getSubscriptionId().toString());
diff --git a/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestInvoiceJsonWithItems.java b/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestInvoiceJsonWithItems.java
index 1b310f6..990cdea 100644
--- a/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestInvoiceJsonWithItems.java
+++ b/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestInvoiceJsonWithItems.java
@@ -100,6 +100,7 @@ public class TestInvoiceJsonWithItems extends JaxrsTestSuite {
final InvoiceItemJsonSimple invoiceItemJsonSimple = invoiceJsonWithItems.getItems().get(0);
Assert.assertEquals(invoiceItemJsonSimple.getInvoiceId(), invoiceItem.getInvoiceId().toString());
+ Assert.assertEquals(invoiceItemJsonSimple.getLinkedInvoiceItemId(), invoiceItem.getLinkedItemId().toString());
Assert.assertEquals(invoiceItemJsonSimple.getAccountId(), invoiceItem.getAccountId().toString());
Assert.assertEquals(invoiceItemJsonSimple.getBundleId(), invoiceItem.getBundleId().toString());
Assert.assertEquals(invoiceItemJsonSimple.getSubscriptionId(), invoiceItem.getSubscriptionId().toString());
@@ -115,6 +116,7 @@ public class TestInvoiceJsonWithItems extends JaxrsTestSuite {
private InvoiceItemJsonSimple createInvoiceItemJson() {
final String invoiceItemId = UUID.randomUUID().toString();
final String invoiceId = UUID.randomUUID().toString();
+ final String linkedInvoiceItemId = UUID.randomUUID().toString();
final String accountId = UUID.randomUUID().toString();
final String bundleId = UUID.randomUUID().toString();
final String subscriptionId = UUID.randomUUID().toString();
@@ -125,7 +127,7 @@ public class TestInvoiceJsonWithItems extends JaxrsTestSuite {
final LocalDate endDate = clock.getUTCToday();
final BigDecimal amount = BigDecimal.TEN;
final Currency currency = Currency.MXN;
- return new InvoiceItemJsonSimple(invoiceItemId, invoiceId, accountId, bundleId, subscriptionId,
+ return new InvoiceItemJsonSimple(invoiceItemId, invoiceId, linkedInvoiceItemId, accountId, bundleId, subscriptionId,
planName, phaseName, description, startDate, endDate,
amount, currency, null);
}
@@ -133,6 +135,7 @@ public class TestInvoiceJsonWithItems extends JaxrsTestSuite {
private InvoiceItem createInvoiceItem() {
final InvoiceItem invoiceItem = Mockito.mock(InvoiceItem.class);
Mockito.when(invoiceItem.getInvoiceId()).thenReturn(UUID.randomUUID());
+ Mockito.when(invoiceItem.getLinkedItemId()).thenReturn(UUID.randomUUID());
Mockito.when(invoiceItem.getAccountId()).thenReturn(UUID.randomUUID());
Mockito.when(invoiceItem.getBundleId()).thenReturn(UUID.randomUUID());
Mockito.when(invoiceItem.getSubscriptionId()).thenReturn(UUID.randomUUID());
diff --git a/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestRefundJson.java b/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestRefundJson.java
index b31626a..bbb9b76 100644
--- a/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestRefundJson.java
+++ b/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestRefundJson.java
@@ -67,6 +67,7 @@ public class TestRefundJson extends JaxrsTestSuite {
private InvoiceItemJsonSimple createInvoiceItemJson() {
final String invoiceItemId = UUID.randomUUID().toString();
final String invoiceId = UUID.randomUUID().toString();
+ final String linkedInvoiceItemId = UUID.randomUUID().toString();
final String accountId = UUID.randomUUID().toString();
final String bundleId = UUID.randomUUID().toString();
final String subscriptionId = UUID.randomUUID().toString();
@@ -78,7 +79,7 @@ public class TestRefundJson extends JaxrsTestSuite {
final BigDecimal amount = BigDecimal.TEN;
final Currency currency = Currency.MXN;
final List<AuditLogJson> auditLogs = createAuditLogsJson();
- return new InvoiceItemJsonSimple(invoiceItemId, invoiceId, accountId, bundleId, subscriptionId,
+ return new InvoiceItemJsonSimple(invoiceItemId, invoiceId, linkedInvoiceItemId, accountId, bundleId, subscriptionId,
planName, phaseName, description, startDate, endDate,
amount, currency, auditLogs);
}
diff --git a/server/src/test/java/com/ning/billing/jaxrs/TestJaxrsBase.java b/server/src/test/java/com/ning/billing/jaxrs/TestJaxrsBase.java
index 6e44e26..54149d7 100644
--- a/server/src/test/java/com/ning/billing/jaxrs/TestJaxrsBase.java
+++ b/server/src/test/java/com/ning/billing/jaxrs/TestJaxrsBase.java
@@ -23,10 +23,12 @@ import java.net.URL;
import java.util.ArrayList;
import java.util.EventListener;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.Set;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
@@ -78,7 +80,6 @@ import com.ning.billing.jaxrs.json.PaymentMethodJson.PaymentMethodPluginDetailJs
import com.ning.billing.jaxrs.json.PaymentMethodJson.PaymentMethodProperties;
import com.ning.billing.jaxrs.json.RefundJson;
import com.ning.billing.jaxrs.json.SubscriptionJsonNoEvents;
-import com.ning.billing.jaxrs.resources.AccountResource;
import com.ning.billing.jaxrs.resources.JaxrsResource;
import com.ning.billing.junction.glue.DefaultJunctionModule;
import com.ning.billing.payment.glue.PaymentModule;
@@ -111,6 +112,8 @@ import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.joda.JodaModule;
+import com.google.common.base.Function;
+import com.google.common.collect.Collections2;
import com.google.common.collect.ImmutableMap;
import com.google.inject.Module;
@@ -626,7 +629,7 @@ public class TestJaxrsBase extends ServerTestSuiteWithEmbeddedDB {
queryParams.put(JaxrsResource.QUERY_REQUESTED_DT, requestedDate.toDateTimeISO().toString());
}
- final InvoiceItemJsonSimple adjustment = new InvoiceItemJsonSimple(invoiceItemId, null, accountId, null, null, null, null,
+ final InvoiceItemJsonSimple adjustment = new InvoiceItemJsonSimple(invoiceItemId, null, null, accountId, null, null, null, null,
null, null, null, amount, currency, null);
final String adjustmentJson = mapper.writeValueAsString(adjustment);
final Response response = doPost(uri, adjustmentJson, queryParams, DEFAULT_HTTP_TIMEOUT_SEC);
@@ -651,7 +654,7 @@ public class TestJaxrsBase extends ServerTestSuiteWithEmbeddedDB {
queryParams.put(JaxrsResource.QUERY_REQUESTED_DT, requestedDate.toDateTimeISO().toString());
}
- final InvoiceItemJsonSimple externalCharge = new InvoiceItemJsonSimple(null, invoiceId, accountId, bundleId, null, null, null,
+ final InvoiceItemJsonSimple externalCharge = new InvoiceItemJsonSimple(null, invoiceId, null, accountId, bundleId, null, null, null,
null, null, null, amount, currency, null);
final String externalChargeJson = mapper.writeValueAsString(externalCharge);
final Response response = doPost(uri, externalChargeJson, queryParams, DEFAULT_HTTP_TIMEOUT_SEC);
@@ -667,7 +670,7 @@ public class TestJaxrsBase extends ServerTestSuiteWithEmbeddedDB {
assertEquals(invoiceResponse.getStatusCode(), Status.OK.getStatusCode());
final String invoicesBaseJson = invoiceResponse.getResponseBody();
- final InvoiceJsonWithItems invoice = mapper.readValue(invoicesBaseJson, new TypeReference<InvoiceJsonWithItems>(){});
+ final InvoiceJsonWithItems invoice = mapper.readValue(invoicesBaseJson, new TypeReference<InvoiceJsonWithItems>() {});
assertNotNull(invoice);
return invoice;
@@ -818,7 +821,7 @@ public class TestJaxrsBase extends ServerTestSuiteWithEmbeddedDB {
final List<InvoiceItemJsonSimple> adjustments = new ArrayList<InvoiceItemJsonSimple>();
for (final String itemId : itemAdjustments.keySet()) {
- adjustments.add(new InvoiceItemJsonSimple(itemId, null, null, null, null, null, null, null, null, null,
+ adjustments.add(new InvoiceItemJsonSimple(itemId, null, null, null, null, null, null, null, null, null, null,
itemAdjustments.get(itemId), null, null));
}
final RefundJson refundJson = new RefundJson(null, paymentId, amount, DEFAULT_CURRENCY, adjusted, null, null, adjustments, null);
@@ -835,6 +838,20 @@ public class TestJaxrsBase extends ServerTestSuiteWithEmbeddedDB {
final String retrievedBaseJson = retrievedResponse.getResponseBody();
final RefundJson retrievedRefundJson = mapper.readValue(retrievedBaseJson, RefundJson.class);
assertNotNull(retrievedRefundJson);
+ // Verify we have the adjusted items
+ if (retrievedRefundJson.getAdjustments() != null) {
+ final Set<String> allLinkedItemIds = new HashSet<String>(Collections2.transform(retrievedRefundJson.getAdjustments(), new Function<InvoiceItemJsonSimple, String>() {
+ @Override
+ public String apply(@Nullable final InvoiceItemJsonSimple input) {
+ if (input != null) {
+ return input.getLinkedInvoiceItemId();
+ } else {
+ return null;
+ }
+ }
+ }));
+ assertEquals(allLinkedItemIds, itemAdjustments.keySet());
+ }
return retrievedRefundJson;
}