Details
diff --git a/entitlement/src/main/java/org/killbill/billing/entitlement/dao/ProxyBlockingStateDao.java b/entitlement/src/main/java/org/killbill/billing/entitlement/dao/ProxyBlockingStateDao.java
index bc3a845..aac961f 100644
--- a/entitlement/src/main/java/org/killbill/billing/entitlement/dao/ProxyBlockingStateDao.java
+++ b/entitlement/src/main/java/org/killbill/billing/entitlement/dao/ProxyBlockingStateDao.java
@@ -199,7 +199,7 @@ public class ProxyBlockingStateDao implements BlockingStateDao {
}
@Override
- public BlockingStateModelDao getById(final UUID id, final InternalTenantContext context) {
+ public BlockingStateModelDao getById(final UUID id, final InternalTenantContext context) throws EntitlementApiException {
return delegate.getById(id, context);
}
diff --git a/entitlement/src/main/java/org/killbill/billing/entitlement/DefaultEntitlementService.java b/entitlement/src/main/java/org/killbill/billing/entitlement/DefaultEntitlementService.java
index 0dcf6f6..00ab6c3 100644
--- a/entitlement/src/main/java/org/killbill/billing/entitlement/DefaultEntitlementService.java
+++ b/entitlement/src/main/java/org/killbill/billing/entitlement/DefaultEntitlementService.java
@@ -175,11 +175,15 @@ public class DefaultEntitlementService implements EntitlementService {
}
}
- private void processBlockingNotification(final BlockingTransitionNotificationKey key, final InternalCallContext internalCallContext) {
+ private void processBlockingNotification(final BlockingTransitionNotificationKey key, final InternalCallContext internalCallContext){
// Check if the blocking state has been deleted since
- if (blockingStateDao.getById(key.getBlockingStateId(), internalCallContext) == null) {
- log.debug("BlockingState {} has been deleted, not sending a bus event", key.getBlockingStateId());
- return;
+ try {
+ if (blockingStateDao.getById(key.getBlockingStateId(), internalCallContext) == null) {
+ log.debug("BlockingState {} has been deleted, not sending a bus event", key.getBlockingStateId());
+ return;
+ }
+ } catch (final EntitlementApiException e) {
+ throw new IllegalStateException(String.format("Unexpected exception when fetching blockingState='%s'", key.getBlockingStateId()), e);
}
final BusEvent event = new DefaultBlockingTransitionInternalEvent(key.getBlockableId(),
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/api/svcs/DefaultInvoiceInternalApi.java b/invoice/src/main/java/org/killbill/billing/invoice/api/svcs/DefaultInvoiceInternalApi.java
index fddc528..7ed4140 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/api/svcs/DefaultInvoiceInternalApi.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/api/svcs/DefaultInvoiceInternalApi.java
@@ -78,7 +78,7 @@ public class DefaultInvoiceInternalApi implements InvoiceInternalApi {
return getInvoiceByIdInternal(invoiceId, context);
}
- private DefaultInvoice getInvoiceByIdInternal(final UUID invoiceId, final InternalTenantContext context) {
+ private DefaultInvoice getInvoiceByIdInternal(final UUID invoiceId, final InternalTenantContext context)throws InvoiceApiException {
return new DefaultInvoice(dao.getById(invoiceId, context));
}
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/api/user/DefaultInvoiceUserApi.java b/invoice/src/main/java/org/killbill/billing/invoice/api/user/DefaultInvoiceUserApi.java
index 5550652..23ce2f9 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/api/user/DefaultInvoiceUserApi.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/api/user/DefaultInvoiceUserApi.java
@@ -207,7 +207,7 @@ public class DefaultInvoiceUserApi implements InvoiceUserApi {
return getInvoiceInternal(invoiceId, context);
}
- private DefaultInvoice getInvoiceInternal(final UUID invoiceId, final TenantContext context) {
+ private DefaultInvoice getInvoiceInternal(final UUID invoiceId, final TenantContext context) throws InvoiceApiException {
final InternalTenantContext internalTenantContext = internalCallContextFactory.createInternalTenantContext(invoiceId, ObjectType.INVOICE, context);
return new DefaultInvoice(dao.getById(invoiceId, internalTenantContext), getCatalogSafelyForPrettyNames(internalTenantContext));
}
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/dao/DefaultInvoiceDao.java b/invoice/src/main/java/org/killbill/billing/invoice/dao/DefaultInvoiceDao.java
index 5c26d11..e5f8132 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/dao/DefaultInvoiceDao.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/dao/DefaultInvoiceDao.java
@@ -222,10 +222,10 @@ public class DefaultInvoiceDao extends EntityDaoBase<InvoiceModelDao, Invoice, I
}
@Override
- public InvoiceModelDao getById(final UUID invoiceId, final InternalTenantContext context) {
+ public InvoiceModelDao getById(final UUID invoiceId, final InternalTenantContext context) throws InvoiceApiException {
final List<Tag> invoicesTags = getInvoicesTags(context);
- return transactionalSqlDao.execute(true, new EntitySqlDaoTransactionWrapper<InvoiceModelDao>() {
+ return transactionalSqlDao.execute(true, InvoiceApiException.class, new EntitySqlDaoTransactionWrapper<InvoiceModelDao>() {
@Override
public InvoiceModelDao inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFactory) throws Exception {
final InvoiceSqlDao invoiceSqlDao = entitySqlDaoWrapperFactory.become(InvoiceSqlDao.class);
diff --git a/invoice/src/test/java/org/killbill/billing/invoice/dao/TestInvoiceDao.java b/invoice/src/test/java/org/killbill/billing/invoice/dao/TestInvoiceDao.java
index c14fc93..dbddbae 100644
--- a/invoice/src/test/java/org/killbill/billing/invoice/dao/TestInvoiceDao.java
+++ b/invoice/src/test/java/org/killbill/billing/invoice/dao/TestInvoiceDao.java
@@ -168,10 +168,8 @@ public class TestInvoiceDao extends InvoiceTestSuiteWithEmbeddedDB {
try {
invoiceDao.getById(UUID.randomUUID(), context);
Assert.fail();
- } catch (TransactionFailedException e) {
- // TODO FIXME getById defined in EntityDaoBase
- Assert.assertTrue(e.getCause() instanceof InvoiceApiException);
- Assert.assertEquals(((InvoiceApiException) e.getCause()).getCode(), ErrorCode.INVOICE_NOT_FOUND.getCode());
+ } catch (InvoiceApiException e) {
+ Assert.assertEquals(e.getCode(), ErrorCode.INVOICE_NOT_FOUND.getCode());
}
try {
@@ -1010,7 +1008,7 @@ public class TestInvoiceDao extends InvoiceTestSuiteWithEmbeddedDB {
}
@Test(groups = "slow")
- public void testInvoiceCreditWithBalancePositive() throws EntityPersistenceException {
+ public void testInvoiceCreditWithBalancePositive() throws EntityPersistenceException, InvoiceApiException {
final BigDecimal creditAmount = new BigDecimal("2.0");
final BigDecimal expectedBalance = new BigDecimal("3.0");
final boolean expectCBA = false;
@@ -1018,7 +1016,7 @@ public class TestInvoiceDao extends InvoiceTestSuiteWithEmbeddedDB {
}
@Test(groups = "slow")
- public void testInvoiceCreditWithBalanceNegative() throws EntityPersistenceException {
+ public void testInvoiceCreditWithBalanceNegative() throws EntityPersistenceException, InvoiceApiException {
final BigDecimal creditAmount = new BigDecimal("7.0");
final BigDecimal expectedBalance = new BigDecimal("0.0");
final boolean expectCBA = true;
@@ -1026,14 +1024,14 @@ public class TestInvoiceDao extends InvoiceTestSuiteWithEmbeddedDB {
}
@Test(groups = "slow")
- public void testInvoiceCreditWithBalanceZero() throws EntityPersistenceException {
+ public void testInvoiceCreditWithBalanceZero() throws EntityPersistenceException, InvoiceApiException {
final BigDecimal creditAmount = new BigDecimal("5.0");
final BigDecimal expectedBalance = new BigDecimal("0.0");
final boolean expectCBA = false;
testInvoiceCreditInternal(creditAmount, expectedBalance, expectCBA);
}
- private void testInvoiceCreditInternal(final BigDecimal creditAmount, final BigDecimal expectedBalance, final boolean expectCBA) throws EntityPersistenceException {
+ private void testInvoiceCreditInternal(final BigDecimal creditAmount, final BigDecimal expectedBalance, final boolean expectCBA) throws EntityPersistenceException, InvoiceApiException {
final UUID accountId = account.getId();
final UUID bundleId = UUID.randomUUID();
@@ -1133,7 +1131,7 @@ public class TestInvoiceDao extends InvoiceTestSuiteWithEmbeddedDB {
}
@Test(groups = "slow")
- public void testGetUnpaidInvoicesByAccountIdWithDraftInvoice() throws EntityPersistenceException {
+ public void testGetUnpaidInvoicesByAccountIdWithDraftInvoice() throws EntityPersistenceException, InvoiceApiException {
final UUID accountId = account.getId();
final UUID bundleId = UUID.randomUUID();
final LocalDate targetDate1 = new LocalDate(2011, 10, 6);
@@ -1760,11 +1758,11 @@ public class TestInvoiceDao extends InvoiceTestSuiteWithEmbeddedDB {
}
- private InvoiceItemModelDao createCredit(final UUID accountId, final LocalDate effectiveDate, final BigDecimal creditAmount, final boolean draft) {
+ private InvoiceItemModelDao createCredit(final UUID accountId, final LocalDate effectiveDate, final BigDecimal creditAmount, final boolean draft)throws InvoiceApiException {
return createCredit(accountId, null, effectiveDate, creditAmount, draft);
}
- private InvoiceItemModelDao createCredit(final UUID accountId, @Nullable final UUID invoiceId, final LocalDate effectiveDate, final BigDecimal creditAmount, final boolean draft) {
+ private InvoiceItemModelDao createCredit(final UUID accountId, @Nullable final UUID invoiceId, final LocalDate effectiveDate, final BigDecimal creditAmount, final boolean draft) throws InvoiceApiException {
final InvoiceModelDao invoiceModelDao;
if (invoiceId == null) {
invoiceModelDao = new InvoiceModelDao(accountId, effectiveDate, effectiveDate, Currency.USD, false, draft ? InvoiceStatus.DRAFT : InvoiceStatus.COMMITTED);
diff --git a/util/src/main/java/org/killbill/billing/util/entity/dao/EntityDao.java b/util/src/main/java/org/killbill/billing/util/entity/dao/EntityDao.java
index 953f1fc..775c6ba 100644
--- a/util/src/main/java/org/killbill/billing/util/entity/dao/EntityDao.java
+++ b/util/src/main/java/org/killbill/billing/util/entity/dao/EntityDao.java
@@ -32,7 +32,7 @@ public interface EntityDao<M extends EntityModelDao<E>, E extends Entity, U exte
public M getByRecordId(Long recordId, InternalTenantContext context);
- public M getById(UUID id, InternalTenantContext context);
+ public M getById(UUID id, InternalTenantContext context) throws U;
public Pagination<M> getAll(InternalTenantContext context);
diff --git a/util/src/main/java/org/killbill/billing/util/entity/dao/EntityDaoBase.java b/util/src/main/java/org/killbill/billing/util/entity/dao/EntityDaoBase.java
index 17040e4..a4684b3 100644
--- a/util/src/main/java/org/killbill/billing/util/entity/dao/EntityDaoBase.java
+++ b/util/src/main/java/org/killbill/billing/util/entity/dao/EntityDaoBase.java
@@ -157,7 +157,7 @@ public abstract class EntityDaoBase<M extends EntityModelDao<E>, E extends Entit
}
@Override
- public M getById(final UUID id, final InternalTenantContext context) {
+ public M getById(final UUID id, final InternalTenantContext context) throws U /* Does not throw anything, but allows class overriding this method to throw */{
return transactionalSqlDao.execute(true, new EntitySqlDaoTransactionWrapper<M>() {
@Override
diff --git a/util/src/main/java/org/killbill/billing/util/tag/dao/DefaultTagDefinitionDao.java b/util/src/main/java/org/killbill/billing/util/tag/dao/DefaultTagDefinitionDao.java
index abf19fa..ce6fd4e 100644
--- a/util/src/main/java/org/killbill/billing/util/tag/dao/DefaultTagDefinitionDao.java
+++ b/util/src/main/java/org/killbill/billing/util/tag/dao/DefaultTagDefinitionDao.java
@@ -111,8 +111,8 @@ public class DefaultTagDefinitionDao extends EntityDaoBase<TagDefinitionModelDao
}
@Override
- public TagDefinitionModelDao getById(final UUID definitionId, final InternalTenantContext context) /* throws TagDefinitionApiException */ {
- return transactionalSqlDao.execute(true, /*TagDefinitionApiException.class,*/ new EntitySqlDaoTransactionWrapper<TagDefinitionModelDao>() {
+ public TagDefinitionModelDao getById(final UUID definitionId, final InternalTenantContext context) throws TagDefinitionApiException {
+ return transactionalSqlDao.execute(true, TagDefinitionApiException.class, new EntitySqlDaoTransactionWrapper<TagDefinitionModelDao>() {
@Override
public TagDefinitionModelDao inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFactory) throws Exception {
final TagDefinitionModelDao systemTag = SystemTags.lookup(definitionId);
diff --git a/util/src/test/java/org/killbill/billing/util/tag/dao/TestDefaultTagDefinitionDao.java b/util/src/test/java/org/killbill/billing/util/tag/dao/TestDefaultTagDefinitionDao.java
index 1a11dae..8abce3c 100644
--- a/util/src/test/java/org/killbill/billing/util/tag/dao/TestDefaultTagDefinitionDao.java
+++ b/util/src/test/java/org/killbill/billing/util/tag/dao/TestDefaultTagDefinitionDao.java
@@ -75,6 +75,13 @@ public class TestDefaultTagDefinitionDao extends UtilTestSuiteWithEmbeddedDB {
Assert.assertEquals(e.getCode(), ErrorCode.TAG_DEFINITION_DOES_NOT_EXIST.getCode());
}
+ try {
+ tagDefinitionDao.getById(UUID.randomUUID(), internalCallContext);
+ Assert.fail("Retrieving random tag definition should fail");
+ } catch (final TagDefinitionApiException e) {
+ Assert.assertEquals(e.getCode(), ErrorCode.TAG_DEFINITION_DOES_NOT_EXIST.getCode());
+ }
+
/*