killbill-aplcache

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," +