Details
diff --git a/account/src/main/java/com/ning/billing/account/api/svcs/DefaultAccountInternalApi.java b/account/src/main/java/com/ning/billing/account/api/svcs/DefaultAccountInternalApi.java
index 2a0cb14..8de582c 100644
--- a/account/src/main/java/com/ning/billing/account/api/svcs/DefaultAccountInternalApi.java
+++ b/account/src/main/java/com/ning/billing/account/api/svcs/DefaultAccountInternalApi.java
@@ -64,9 +64,13 @@ public class DefaultAccountInternalApi implements AccountInternalApi {
@Override
public void updateAccount(final String externalKey, final AccountData accountData,
final InternalCallContext context) throws AccountApiException {
- final Account account = getAccountByKey(externalKey, context);
- final Account updatedAccount = new DefaultAccount(account.getId(), accountData);
- accountDao.update(updatedAccount, context);
+ try {
+ final Account account = getAccountByKey(externalKey, context);
+ final Account updatedAccount = new DefaultAccount(account.getId(), accountData);
+ accountDao.update(updatedAccount, context);
+ } catch (EntityPersistenceException e) {
+ throw new AccountApiException(e, ErrorCode.ACCOUNT_DOES_NOT_EXIST_FOR_ID);
+ }
}
@Override
diff --git a/account/src/main/java/com/ning/billing/account/api/user/DefaultAccountUserApi.java b/account/src/main/java/com/ning/billing/account/api/user/DefaultAccountUserApi.java
index 5592748..b1e3353 100644
--- a/account/src/main/java/com/ning/billing/account/api/user/DefaultAccountUserApi.java
+++ b/account/src/main/java/com/ning/billing/account/api/user/DefaultAccountUserApi.java
@@ -99,16 +99,25 @@ public class DefaultAccountUserApi implements AccountUserApi {
@Override
public void updateAccount(final Account account, final CallContext context) throws AccountApiException {
- accountDao.update(account, internalCallContextFactory.createInternalCallContext(account.getId(), context));
+ try {
+ accountDao.update(account, internalCallContextFactory.createInternalCallContext(account.getId(), context));
+ } catch (EntityPersistenceException e) {
+ throw new AccountApiException(e, ErrorCode.ACCOUNT_DOES_NOT_EXIST_FOR_ID, account.getId());
+ }
}
@Override
public void updateAccount(final UUID accountId, final AccountData accountData, final CallContext context)
throws AccountApiException {
- final Account account = new DefaultAccount(accountId, accountData);
- accountDao.update(account, internalCallContextFactory.createInternalCallContext(account.getId(), context));
-
+ try {
+ final Account account = new DefaultAccount(accountId, accountData);
+ accountDao.update(account, internalCallContextFactory.createInternalCallContext(account.getId(), context));
+ } catch (EntityPersistenceException e) {
+ throw new AccountApiException(e, ErrorCode.ACCOUNT_DOES_NOT_EXIST_FOR_ID);
+ } catch (RuntimeException e /* EntityPersistenceException */) {
+ throw new AccountApiException(e, ErrorCode.ACCOUNT_DOES_NOT_EXIST_FOR_ID, accountId);
+ }
}
@Override
diff --git a/account/src/main/java/com/ning/billing/account/dao/AccountDao.java b/account/src/main/java/com/ning/billing/account/dao/AccountDao.java
index 76275ad..ee9edb0 100644
--- a/account/src/main/java/com/ning/billing/account/dao/AccountDao.java
+++ b/account/src/main/java/com/ning/billing/account/dao/AccountDao.java
@@ -41,5 +41,5 @@ public interface AccountDao extends EntityDao<Account> {
*/
public void updatePaymentMethod(UUID accountId, UUID paymentMethodId, InternalCallContext context) throws EntityPersistenceException;
- public void update(Account account, InternalCallContext context);
+ public void update(Account account, InternalCallContext context) throws EntityPersistenceException;
}
diff --git a/tenant/src/main/resources/com/ning/billing/tenant/dao/TenantKVSqlDao.sql.stg b/tenant/src/main/resources/com/ning/billing/tenant/dao/TenantKVSqlDao.sql.stg
index 432267f..ce66a1a 100644
--- a/tenant/src/main/resources/com/ning/billing/tenant/dao/TenantKVSqlDao.sql.stg
+++ b/tenant/src/main/resources/com/ning/billing/tenant/dao/TenantKVSqlDao.sql.stg
@@ -3,6 +3,7 @@ group TenantKVSqlDao;
tenantKVFields(prefix) ::= <<
<prefix>record_id,
+ <prefix>id,
<prefix>tenant_record_id,
<prefix>t_key,
<prefix>t_value,
@@ -14,7 +15,8 @@ tenantKVFields(prefix) ::= <<
insertTenantKeyValue() ::= <<
INSERT INTO tenant_kvs (
- tenant_record_id
+ id
+ , tenant_record_id
, t_key
, t_value
, created_date
@@ -22,7 +24,8 @@ insertTenantKeyValue() ::= <<
, updated_date
, updated_by
) VALUES (
- :tenantRecordId
+ :id
+ , :tenantRecordId
, :key
, :value
, :createdDate
@@ -52,4 +55,4 @@ deleteTenantKey() ::= <<
test() ::= <<
SELECT 1 FROM tenants;
->>
\ No newline at end of file
+>>
diff --git a/util/src/test/java/com/ning/billing/util/export/dao/TestDatabaseExportDao.java b/util/src/test/java/com/ning/billing/util/export/dao/TestDatabaseExportDao.java
index db9465e..f5bdecb 100644
--- a/util/src/test/java/com/ning/billing/util/export/dao/TestDatabaseExportDao.java
+++ b/util/src/test/java/com/ning/billing/util/export/dao/TestDatabaseExportDao.java
@@ -61,11 +61,13 @@ public class TestDatabaseExportDao extends UtilTestSuiteWithEmbeddedDB {
getMysqlTestingHelper().getDBI().withHandle(new HandleCallback<Void>() {
@Override
public Void withHandle(final Handle handle) throws Exception {
+ handle.execute("drop table if exists " + tableNameA);
handle.execute("create table " + tableNameA + "(record_id int(11) unsigned not null auto_increment," +
"a_column char default 'a'," +
"account_record_id int(11) unsigned not null," +
"tenant_record_id int(11) unsigned default 0," +
"primary key(record_id)) engine=innodb;");
+ handle.execute("drop table if exists " + tableNameB);
handle.execute("create table " + tableNameB + "(record_id int(11) unsigned not null auto_increment," +
"b_column char default 'b'," +
"account_record_id int(11) unsigned not null," +