Details
diff --git a/api/src/main/java/com/ning/billing/ErrorCode.java b/api/src/main/java/com/ning/billing/ErrorCode.java
index 2678afc..9e17323 100644
--- a/api/src/main/java/com/ning/billing/ErrorCode.java
+++ b/api/src/main/java/com/ning/billing/ErrorCode.java
@@ -182,6 +182,7 @@ public enum ErrorCode {
INVOICE_NO_ACCOUNT_ID_FOR_SUBSCRIPTION_ID(4003, "No account id was retrieved for subscription id %s"),
INVOICE_INVALID_DATE_SEQUENCE(4004, "Date sequence was invalid. Start Date: %s; End Date: %s; Target Date: %s"),
INVOICE_TARGET_DATE_TOO_FAR_IN_THE_FUTURE(4005, "The target date was too far in the future. Target Date: %s"),
+ INVOICE_NOT_FOUND(4006, "No invoice could be found for id %s."),
/*
*
diff --git a/api/src/main/java/com/ning/billing/invoice/api/InvoiceUserApi.java b/api/src/main/java/com/ning/billing/invoice/api/InvoiceUserApi.java
index 9c32e46..d95f56d 100644
--- a/api/src/main/java/com/ning/billing/invoice/api/InvoiceUserApi.java
+++ b/api/src/main/java/com/ning/billing/invoice/api/InvoiceUserApi.java
@@ -53,5 +53,5 @@ public interface InvoiceUserApi {
public InvoiceItem insertCredit(UUID accountId, BigDecimal amount, DateTime effectiveDate,
Currency currency, CallContext context) throws InvoiceApiException;
- public String getInvoiceAsHTML(UUID invoiceId) throws AccountApiException, IOException;
+ public String getInvoiceAsHTML(UUID invoiceId) throws AccountApiException, IOException, InvoiceApiException;
}
diff --git a/invoice/src/main/java/com/ning/billing/invoice/api/user/DefaultInvoiceUserApi.java b/invoice/src/main/java/com/ning/billing/invoice/api/user/DefaultInvoiceUserApi.java
index 8228898..850f2c4 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/api/user/DefaultInvoiceUserApi.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/api/user/DefaultInvoiceUserApi.java
@@ -24,6 +24,7 @@ import java.util.UUID;
import org.joda.time.DateTime;
import com.google.inject.Inject;
+import com.ning.billing.ErrorCode;
import com.ning.billing.account.api.Account;
import com.ning.billing.account.api.AccountApiException;
import com.ning.billing.account.api.AccountUserApi;
@@ -113,8 +114,12 @@ public class DefaultInvoiceUserApi implements InvoiceUserApi {
}
@Override
- public String getInvoiceAsHTML(final UUID invoiceId) throws AccountApiException, IOException {
+ public String getInvoiceAsHTML(final UUID invoiceId) throws AccountApiException, IOException, InvoiceApiException {
final Invoice invoice = getInvoice(invoiceId);
+ if (invoice == null) {
+ throw new InvoiceApiException(ErrorCode.INVOICE_NOT_FOUND, invoiceId);
+ }
+
final Account account = accountUserApi.getAccountById(invoice.getAccountId());
return generator.generateInvoice(account, invoice);
}
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 d70840d..dc2d8e9 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
@@ -141,6 +141,8 @@ public class InvoiceResource extends JaxRsResourceBase {
return Response.status(Status.NO_CONTENT).build();
} catch (IOException e) {
return Response.status(Status.INTERNAL_SERVER_ERROR).build();
+ } catch (InvoiceApiException e) {
+ return Response.status(Status.NO_CONTENT).build();
}
}