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 204cf6a..b3ca059 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
@@ -1,4 +1,4 @@
-/*
+/*
* Copyright 2010-2011 Ning, Inc.
*
* Ning licenses this file to you under the Apache License, version 2.0
@@ -25,7 +25,6 @@ import java.util.UUID;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonView;
-
import com.ning.billing.account.api.Account;
import com.ning.billing.entitlement.api.timeline.BundleTimeline;
import com.ning.billing.invoice.api.Invoice;
@@ -39,24 +38,24 @@ public class AccountTimelineJson {
@JsonView(BundleTimelineViews.ReadTimeline.class)
private final List<InvoiceJsonWithBundleKeys> invoices;
-
+
@JsonView(BundleTimelineViews.ReadTimeline.class)
private final AccountJsonSimple account;
-
+
@JsonView(BundleTimelineViews.Timeline.class)
private final List<BundleJsonWithSubscriptions> bundles;
-
+
@JsonCreator
public AccountTimelineJson(@JsonProperty("account") AccountJsonSimple account,
@JsonProperty("bundles") List<BundleJsonWithSubscriptions> bundles,
- @JsonProperty("invoices") List<InvoiceJsonWithBundleKeys> invoices,
+ @JsonProperty("invoices") List<InvoiceJsonWithBundleKeys> invoices,
@JsonProperty("payments") List<PaymentJsonWithBundleKeys> payments) {
this.account = account;
this.bundles = bundles;
this.invoices = invoices;
this.payments = payments;
}
-
+
private String getBundleExternalKey(UUID invoiceId, List<Invoice> invoices, List<BundleTimeline> bundles) {
for (Invoice cur : invoices) {
if (cur.getId().equals(invoiceId)) {
@@ -65,7 +64,7 @@ public class AccountTimelineJson {
}
return null;
}
-
+
private String getBundleExternalKey(Invoice invoice, List<BundleTimeline> bundles) {
Set<UUID> b = new HashSet<UUID>();
for (final InvoiceItem cur : invoice.getInvoiceItems()) {
@@ -87,32 +86,46 @@ public class AccountTimelineJson {
}
return tmp.toString();
}
-
+
public AccountTimelineJson(Account account, List<Invoice> invoices, List<PaymentAttempt> payments, List<BundleTimeline> bundles) {
this.account = new AccountJsonSimple(account.getId().toString(), account.getExternalKey());
this.bundles = new LinkedList<BundleJsonWithSubscriptions>();
for (BundleTimeline cur : bundles) {
- this.bundles.add(new BundleJsonWithSubscriptions(account.getId(), cur));
+ this.bundles.add(new BundleJsonWithSubscriptions(account.getId(), cur));
}
this.invoices = new LinkedList<InvoiceJsonWithBundleKeys>();
for (Invoice cur : invoices) {
- this.invoices.add(new InvoiceJsonWithBundleKeys(cur.getAmountCharged(), cur.getAmountCredited(), cur.getId().toString(), cur.getInvoiceDate(), cur.getTargetDate(),
- Integer.toString(cur.getInvoiceNumber()), cur.getBalance(),
- getBundleExternalKey(cur, bundles)));
+ this.invoices.add(new InvoiceJsonWithBundleKeys(cur.getAmountPaid(),
+ cur.getAmountCredited(),
+ cur.getId().toString(),
+ cur.getInvoiceDate(),
+ cur.getTargetDate(),
+ Integer.toString(cur.getInvoiceNumber()),
+ cur.getBalance(),
+ cur.getAccountId().toString(),
+ getBundleExternalKey(cur, bundles)));
}
this.payments = new LinkedList<PaymentJsonWithBundleKeys>();
for (PaymentAttempt cur : payments) {
-
+
String status = cur.getPaymentId() != null ? "Success" : "Failed";
BigDecimal paidAmount = cur.getPaymentId() != null ? cur.getAmount() : BigDecimal.ZERO;
-
- this.payments.add(new PaymentJsonWithBundleKeys(cur.getAmount(), paidAmount, cur.getInvoiceId(), cur.getPaymentId(), cur.getCreatedDate(), cur.getUpdatedDate(),
- cur.getRetryCount(), cur.getCurrency().toString(), status,
- getBundleExternalKey(cur.getInvoiceId(), invoices, bundles)));
+
+ this.payments.add(new PaymentJsonWithBundleKeys(cur.getAmount(),
+ paidAmount,
+ cur.getInvoiceId(),
+ cur.getPaymentId(),
+ cur.getCreatedDate(),
+ cur.getUpdatedDate(),
+ cur.getRetryCount(),
+ cur.getCurrency().toString(),
+ status,
+ cur.getAccountId(),
+ getBundleExternalKey(cur.getInvoiceId(), invoices, bundles)));
}
}
-
+
public AccountTimelineJson() {
this.account = null;
this.bundles = null;
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
new file mode 100644
index 0000000..e3011f3
--- /dev/null
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/InvoiceItemJsonSimple.java
@@ -0,0 +1,122 @@
+/*
+ * Copyright 2010-2011 Ning, Inc.
+ *
+ * Ning licenses this file to you under the Apache License, version 2.0
+ * (the "License"); you may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.ning.billing.jaxrs.json;
+
+import java.math.BigDecimal;
+import java.util.UUID;
+
+import org.joda.time.DateTime;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ning.billing.catalog.api.Currency;
+import com.ning.billing.invoice.api.InvoiceItem;
+
+public class InvoiceItemJsonSimple {
+ private final UUID invoiceId;
+ private final UUID accountId;
+ private final UUID bundleId;
+ private final UUID subscriptionId;
+ private final String planName;
+ private final String phaseName;
+ private final String description;
+ private final DateTime startDate;
+ private final DateTime endDate;
+ private final BigDecimal amount;
+ private final Currency currency;
+
+ public InvoiceItemJsonSimple(@JsonProperty("invoiceId") UUID invoiceId,
+ @JsonProperty("accountId") UUID accountId,
+ @JsonProperty("bundleId") UUID bundleId,
+ @JsonProperty("subscriptionId") UUID subscriptionId,
+ @JsonProperty("planName") String planName,
+ @JsonProperty("phaseName") String phaseName,
+ @JsonProperty("description") String description,
+ @JsonProperty("startDate") DateTime startDate,
+ @JsonProperty("endDate") DateTime endDate,
+ @JsonProperty("amount") BigDecimal amount,
+ @JsonProperty("currency") Currency currency) {
+ this.invoiceId = invoiceId;
+ this.accountId = accountId;
+ this.bundleId = bundleId;
+ this.subscriptionId = subscriptionId;
+ this.planName = planName;
+ this.phaseName = phaseName;
+ this.description = description;
+ this.startDate = startDate;
+ this.endDate = endDate;
+ this.amount = amount;
+ this.currency = currency;
+ }
+
+ public InvoiceItemJsonSimple(InvoiceItem item) {
+ this.invoiceId = item.getInvoiceId();
+ this.accountId = item.getAccountId();
+ this.bundleId = item.getBundleId();
+ this.subscriptionId = item.getSubscriptionId();
+ this.planName = item.getPlanName();
+ this.phaseName = item.getPhaseName();
+ this.description = item.getDescription();
+ this.startDate = item.getStartDate();
+ this.endDate = item.getEndDate();
+ this.amount = item.getAmount();
+ this.currency = item.getCurrency();
+ }
+
+ public UUID getInvoiceId() {
+ return invoiceId;
+ }
+
+ public UUID getAccountId() {
+ return accountId;
+ }
+
+ public UUID getBundleId() {
+ return bundleId;
+ }
+
+ public UUID getSubscriptionId() {
+ return subscriptionId;
+ }
+
+ public String getPlanName() {
+ return planName;
+ }
+
+ public String getPhaseName() {
+ return phaseName;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public DateTime getStartDate() {
+ return startDate;
+ }
+
+ public DateTime getEndDate() {
+ return endDate;
+ }
+
+ public BigDecimal getAmount() {
+ return amount;
+ }
+
+ public Currency getCurrency() {
+ return currency;
+ }
+}
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/InvoiceJsonSimple.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/InvoiceJsonSimple.java
index 5680db1..7b0d504 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/InvoiceJsonSimple.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/InvoiceJsonSimple.java
@@ -18,11 +18,10 @@ package com.ning.billing.jaxrs.json;
import java.math.BigDecimal;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonView;
import org.joda.time.DateTime;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
import com.ning.billing.invoice.api.Invoice;
public class InvoiceJsonSimple {
@@ -33,17 +32,19 @@ public class InvoiceJsonSimple {
private final DateTime targetDate;
private final String invoiceNumber;
private final BigDecimal balance;
+ private final String accountId;
public InvoiceJsonSimple() {
this.amount = BigDecimal.ZERO;
this.credit = BigDecimal.ZERO;
this.invoiceId = null;
this.invoiceDate = null;
- this.targetDate = null;
+ this.targetDate = null;
this.invoiceNumber = null;
this.balance = BigDecimal.ZERO;
+ this.accountId = null;
}
-
+
@JsonCreator
public InvoiceJsonSimple(@JsonProperty("amount") BigDecimal amount,
@JsonProperty("credit") BigDecimal credit,
@@ -51,7 +52,8 @@ public class InvoiceJsonSimple {
@JsonProperty("invoiceDate") DateTime invoiceDate,
@JsonProperty("targetDate") DateTime targetDate,
@JsonProperty("invoiceNumber") String invoiceNumber,
- @JsonProperty("balance") BigDecimal balance) {
+ @JsonProperty("balance") BigDecimal balance,
+ @JsonProperty("accountId") String accountId) {
super();
this.amount = amount;
this.credit = credit;
@@ -60,6 +62,7 @@ public class InvoiceJsonSimple {
this.targetDate = targetDate;
this.invoiceNumber = invoiceNumber;
this.balance = balance;
+ this.accountId = accountId;
}
public InvoiceJsonSimple(Invoice input) {
@@ -70,8 +73,9 @@ public class InvoiceJsonSimple {
this.targetDate = input.getTargetDate();
this.invoiceNumber = String.valueOf(input.getInvoiceNumber());
this.balance = input.getBalance();
+ this.accountId = input.getAccountId().toString();
}
-
+
public BigDecimal getAmount() {
return amount;
}
@@ -100,6 +104,10 @@ public class InvoiceJsonSimple {
return balance;
}
+ public String getAccountId() {
+ return accountId;
+ }
+
@Override
public int hashCode() {
final int prime = 31;
@@ -161,6 +169,12 @@ public class InvoiceJsonSimple {
} else if (!invoiceNumber.equals(other.invoiceNumber))
return false;
+ if (accountId == null) {
+ if (other.accountId != null)
+ return false;
+ } else if (!accountId.equals(other.accountId))
+ return false;
+
return true;
}
}
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/InvoiceJsonWithBundleKeys.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/InvoiceJsonWithBundleKeys.java
index f1b0b4a..da3ccf4 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/InvoiceJsonWithBundleKeys.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/InvoiceJsonWithBundleKeys.java
@@ -1,13 +1,13 @@
package com.ning.billing.jaxrs.json;
import java.math.BigDecimal;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
import org.joda.time.DateTime;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
import com.ning.billing.invoice.api.Invoice;
-/*
+/*
* Copyright 2010-2011 Ning, Inc.
*
* Ning licenses this file to you under the Apache License, version 2.0
@@ -30,7 +30,7 @@ public class InvoiceJsonWithBundleKeys extends InvoiceJsonSimple {
super();
this.bundleKeys = null;
}
-
+
@JsonCreator
public InvoiceJsonWithBundleKeys(@JsonProperty("amount") BigDecimal amount,
@JsonProperty("credit") BigDecimal credit,
@@ -39,8 +39,9 @@ public class InvoiceJsonWithBundleKeys extends InvoiceJsonSimple {
@JsonProperty("targetDate") DateTime targetDate,
@JsonProperty("invoiceNumber") String invoiceNumber,
@JsonProperty("balance") BigDecimal balance,
+ @JsonProperty("accountId") String accountId,
@JsonProperty("externalBundleKeys") String bundleKeys) {
- super(amount, credit, invoiceId, invoiceDate, targetDate, invoiceNumber, balance);
+ super(amount, credit, invoiceId, invoiceDate, targetDate, invoiceNumber, balance, accountId);
this.bundleKeys = bundleKeys;
}
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/InvoiceJsonWithItems.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/InvoiceJsonWithItems.java
new file mode 100644
index 0000000..b68d34d
--- /dev/null
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/InvoiceJsonWithItems.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright 2010-2011 Ning, Inc.
+ *
+ * Ning licenses this file to you under the Apache License, version 2.0
+ * (the "License"); you may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.ning.billing.jaxrs.json;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.joda.time.DateTime;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ning.billing.invoice.api.Invoice;
+import com.ning.billing.invoice.api.InvoiceItem;
+
+public class InvoiceJsonWithItems extends InvoiceJsonSimple {
+ private final List<InvoiceItemJsonSimple> items;
+
+ @JsonCreator
+ public InvoiceJsonWithItems(@JsonProperty("amount") BigDecimal amount,
+ @JsonProperty("credit") BigDecimal credit,
+ @JsonProperty("invoiceId") String invoiceId,
+ @JsonProperty("invoiceDate") DateTime invoiceDate,
+ @JsonProperty("targetDate") DateTime targetDate,
+ @JsonProperty("invoiceNumber") String invoiceNumber,
+ @JsonProperty("balance") BigDecimal balance,
+ @JsonProperty("accountId") String accountId,
+ @JsonProperty("items") List<InvoiceItemJsonSimple> items) {
+ super(amount, credit, invoiceId, invoiceDate, targetDate, invoiceNumber, balance, accountId);
+ this.items = new ArrayList<InvoiceItemJsonSimple>(items);
+ }
+
+ public InvoiceJsonWithItems(Invoice input) {
+ super(input);
+ this.items = new ArrayList<InvoiceItemJsonSimple>(input.getInvoiceItems().size());
+ for (InvoiceItem item : input.getInvoiceItems()) {
+ this.items.add(new InvoiceItemJsonSimple(item));
+ }
+ }
+
+ public List<InvoiceItemJsonSimple> getItems() {
+ return Collections.unmodifiableList(items);
+ }
+}
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/PaymentJsonSimple.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/PaymentJsonSimple.java
index 93cd5a0..b84d8b4 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/PaymentJsonSimple.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/PaymentJsonSimple.java
@@ -19,11 +19,10 @@ package com.ning.billing.jaxrs.json;
import java.math.BigDecimal;
import java.util.UUID;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonView;
import org.joda.time.DateTime;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
import com.ning.billing.util.clock.DefaultClock;
public class PaymentJsonSimple {
@@ -33,19 +32,21 @@ public class PaymentJsonSimple {
private final BigDecimal amount;
private final UUID invoiceId;
-
+
private final UUID paymentId;
-
+
private final DateTime requestedDate;
-
+
private final DateTime effectiveDate;
-
+
private final Integer retryCount;
-
+
private final String currency;
-
+
private final String status;
-
+
+ private final UUID accountId;
+
public PaymentJsonSimple() {
this.amount = null;
this.paidAmount = null;
@@ -56,6 +57,7 @@ public class PaymentJsonSimple {
this.currency = null;
this.retryCount = null;
this.status = null;
+ this.accountId = null;
}
@JsonCreator
@@ -66,8 +68,9 @@ public class PaymentJsonSimple {
@JsonProperty("requestedDate") DateTime requestedDate,
@JsonProperty("effectiveDate") DateTime effectiveDate,
@JsonProperty("retryCount") Integer retryCount,
- @JsonProperty("currency") String currency,
- @JsonProperty("status") String status) {
+ @JsonProperty("currency") String currency,
+ @JsonProperty("status") String status,
+ @JsonProperty("paymentId") UUID accountId) {
super();
this.amount = amount;
this.paidAmount = paidAmount;
@@ -78,6 +81,7 @@ public class PaymentJsonSimple {
this.currency = currency;
this.retryCount = retryCount;
this.status = status;
+ this.accountId = accountId;
}
public BigDecimal getPaidAmount() {
@@ -115,4 +119,8 @@ public class PaymentJsonSimple {
public String getCurrency() {
return currency;
}
+
+ public UUID getAccountId() {
+ return accountId;
+ }
}
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/PaymentJsonWithBundleKeys.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/PaymentJsonWithBundleKeys.java
index bd11782..8430a1b 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/PaymentJsonWithBundleKeys.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/PaymentJsonWithBundleKeys.java
@@ -19,14 +19,15 @@ package com.ning.billing.jaxrs.json;
import java.math.BigDecimal;
import java.util.UUID;
+import org.joda.time.DateTime;
+
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
-import org.joda.time.DateTime;
public class PaymentJsonWithBundleKeys extends PaymentJsonSimple {
private final String bundleKeys;
-
+
public PaymentJsonWithBundleKeys() {
super();
this.bundleKeys = null;
@@ -40,13 +41,14 @@ public class PaymentJsonWithBundleKeys extends PaymentJsonSimple {
@JsonProperty("requestedDt") DateTime requestedDate,
@JsonProperty("effectiveDt") DateTime effectiveDate,
@JsonProperty("retryCount") Integer retryCount,
- @JsonProperty("currency") String currency,
+ @JsonProperty("currency") String currency,
@JsonProperty("status") String status,
+ @JsonProperty("accountId") UUID accountId,
@JsonProperty("externalBundleKeys") String bundleKeys) {
- super(amount, paidAmount, invoiceId, paymentId, requestedDate, effectiveDate, retryCount, currency, status);
+ super(amount, paidAmount, invoiceId, paymentId, requestedDate, effectiveDate, retryCount, currency, status, accountId);
this.bundleKeys = bundleKeys;
}
-
+
public String getBundleKeys() {
return bundleKeys;
}
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/InvoiceResource.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/InvoiceResource.java
index 0081a16..58703b3 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/InvoiceResource.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/InvoiceResource.java
@@ -32,15 +32,9 @@ import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
-
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
-import com.ning.billing.jaxrs.json.CustomFieldJson;
-import com.ning.billing.jaxrs.util.TagHelper;
-import com.ning.billing.util.api.CustomFieldUserApi;
-import com.ning.billing.util.api.TagUserApi;
-import com.ning.billing.util.dao.ObjectType;
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormatter;
import org.joda.time.format.ISODateTimeFormat;
@@ -54,10 +48,15 @@ import com.ning.billing.account.api.AccountUserApi;
import com.ning.billing.invoice.api.Invoice;
import com.ning.billing.invoice.api.InvoiceApiException;
import com.ning.billing.invoice.api.InvoiceUserApi;
-
+import com.ning.billing.jaxrs.json.CustomFieldJson;
import com.ning.billing.jaxrs.json.InvoiceJsonSimple;
+import com.ning.billing.jaxrs.json.InvoiceJsonWithItems;
import com.ning.billing.jaxrs.util.Context;
import com.ning.billing.jaxrs.util.JaxrsUriBuilder;
+import com.ning.billing.jaxrs.util.TagHelper;
+import com.ning.billing.util.api.CustomFieldUserApi;
+import com.ning.billing.util.api.TagUserApi;
+import com.ning.billing.util.dao.ObjectType;
@Path(JaxrsResource.INVOICES_PATH)
@@ -68,12 +67,12 @@ public class InvoiceResource extends JaxRsResourceBase {
private static final String TAG_URI = JaxrsResource.TAGS + "/{" + ID_PARAM_NAME + ":" + UUID_PATTERN + "}";
private final DateTimeFormatter DATE_TIME_FORMATTER = ISODateTimeFormat.dateTime();
-
+
private final AccountUserApi accountApi;
private final InvoiceUserApi invoiceApi;
private final Context context;
private final JaxrsUriBuilder uriBuilder;
-
+
@Inject
public InvoiceResource(final AccountUserApi accountApi,
final InvoiceUserApi invoiceApi,
@@ -88,12 +87,12 @@ public class InvoiceResource extends JaxRsResourceBase {
this.context = context;
this.uriBuilder = uriBuilder;
}
-
+
@GET
@Produces(APPLICATION_JSON)
public Response getInvoices(@QueryParam(QUERY_ACCOUNT_ID) final String accountId) {
try {
-
+
Preconditions.checkNotNull(accountId, "% query parameter must be specified", QUERY_ACCOUNT_ID);
accountApi.getAccountById(UUID.fromString(accountId));
List<Invoice> invoices = invoiceApi.getInvoicesByAccount(UUID.fromString(accountId));
@@ -103,18 +102,25 @@ public class InvoiceResource extends JaxRsResourceBase {
}
return Response.status(Status.OK).entity(result).build();
} catch (AccountApiException e) {
- return Response.status(Status.NO_CONTENT).build();
+ return Response.status(Status.NO_CONTENT).build();
} catch (NullPointerException e) {
- return Response.status(Status.BAD_REQUEST).build();
+ return Response.status(Status.BAD_REQUEST).build();
}
}
@GET
@Path("/{invoiceId:\\w+-\\w+-\\w+-\\w+-\\w+}")
@Produces(APPLICATION_JSON)
- public Response getInvoice(@PathParam("invoiceId") String invoiceId) {
+ public Response getInvoice(@PathParam("invoiceId") String invoiceId, @QueryParam("withItems") @DefaultValue("false") boolean withItems) {
Invoice invoice = invoiceApi.getInvoice(UUID.fromString(invoiceId));
- InvoiceJsonSimple json = new InvoiceJsonSimple(invoice);
+ InvoiceJsonSimple json;
+
+ if (withItems) {
+ json = new InvoiceJsonWithItems(invoice);
+ }
+ else {
+ json = new InvoiceJsonSimple(invoice);
+ }
return Response.status(Status.OK).entity(json).build();
}
@@ -130,12 +136,12 @@ public class InvoiceResource extends JaxRsResourceBase {
@HeaderParam(HDR_COMMENT) final String comment) {
try {
-
+
Preconditions.checkNotNull(accountId, "% needs to be specified", QUERY_ACCOUNT_ID);
Preconditions.checkNotNull(targetDate, "% needs to be specified", QUERY_TARGET_DATE);
-
- DateTime inputDate = (targetDate != null) ? DATE_TIME_FORMATTER.parseDateTime(targetDate) : null;
-
+
+ DateTime inputDate = (targetDate != null) ? DATE_TIME_FORMATTER.parseDateTime(targetDate) : null;
+
accountApi.getAccountById(UUID.fromString(accountId));
Invoice generatedInvoice = invoiceApi.triggerInvoiceGeneration(UUID.fromString(accountId), inputDate, dryRun.booleanValue(),
context.createContext(createdBy, reason, comment));
@@ -145,11 +151,11 @@ public class InvoiceResource extends JaxRsResourceBase {
return uriBuilder.buildResponse(InvoiceResource.class, "getInvoice", generatedInvoice.getId());
}
} catch (AccountApiException e) {
- return Response.status(Status.BAD_REQUEST).entity(e.getMessage()).build();
+ return Response.status(Status.BAD_REQUEST).entity(e.getMessage()).build();
} catch (InvoiceApiException e) {
- return Response.status(Status.BAD_REQUEST).entity(e.getMessage()).build();
+ return Response.status(Status.BAD_REQUEST).entity(e.getMessage()).build();
} catch (NullPointerException e) {
- return Response.status(Status.BAD_REQUEST).entity(e.getMessage()).build();
+ return Response.status(Status.BAD_REQUEST).entity(e.getMessage()).build();
}
}