killbill-memoizeit

#604 - Updated ddl.sql of Account, Tenant, Bundle and Payments. -

10/5/2016 5:16:21 PM

Details

diff --git a/account/src/main/java/org/killbill/billing/account/api/user/DefaultAccountUserApi.java b/account/src/main/java/org/killbill/billing/account/api/user/DefaultAccountUserApi.java
index 1f1ad92..0a64a07 100644
--- a/account/src/main/java/org/killbill/billing/account/api/user/DefaultAccountUserApi.java
+++ b/account/src/main/java/org/killbill/billing/account/api/user/DefaultAccountUserApi.java
@@ -18,6 +18,7 @@
 
 package org.killbill.billing.account.api.user;
 
+import java.sql.SQLDataException;
 import java.util.List;
 import java.util.UUID;
 
@@ -34,6 +35,7 @@ import org.killbill.billing.account.dao.AccountEmailModelDao;
 import org.killbill.billing.account.dao.AccountModelDao;
 import org.killbill.billing.callcontext.InternalCallContext;
 import org.killbill.billing.callcontext.InternalTenantContext;
+import org.killbill.billing.tenant.api.TenantApiException;
 import org.killbill.billing.util.cache.CacheControllerDispatcher;
 import org.killbill.billing.util.callcontext.CallContext;
 import org.killbill.billing.util.callcontext.InternalCallContextFactory;
@@ -93,7 +95,14 @@ public class DefaultAccountUserApi extends DefaultAccountApiBase implements Acco
         }
 
         final AccountModelDao account = new AccountModelDao(data);
-        accountDao.create(account, internalCallContextFactory.createInternalCallContextWithoutAccountRecordId(context));
+
+        try {
+            accountDao.create(account, internalCallContextFactory.createInternalCallContextWithoutAccountRecordId(context));
+        } catch (final Exception e) {
+            if (e.getCause() instanceof SQLDataException) {
+                throw new AccountApiException(e, ErrorCode.EXTERNAL_KEY_LIMIT_EXCEEDED);
+            }
+        }
 
         return new DefaultAccount(account);
     }
diff --git a/account/src/main/resources/org/killbill/billing/account/ddl.sql b/account/src/main/resources/org/killbill/billing/account/ddl.sql
index b025697..295a88d 100644
--- a/account/src/main/resources/org/killbill/billing/account/ddl.sql
+++ b/account/src/main/resources/org/killbill/billing/account/ddl.sql
@@ -4,7 +4,7 @@ DROP TABLE IF EXISTS accounts;
 CREATE TABLE accounts (
     record_id serial unique,
     id varchar(36) NOT NULL,
-    external_key varchar(128) NULL,
+    external_key varchar(255) NULL,
     email varchar(128) DEFAULT NULL,
     name varchar(100) DEFAULT NULL,
     first_name_length int DEFAULT NULL,
@@ -42,7 +42,7 @@ CREATE TABLE account_history (
     record_id serial unique,
     id varchar(36) NOT NULL,
     target_record_id bigint /*! unsigned */ not null,
-    external_key varchar(128) NULL,
+    external_key varchar(255) NULL,
     email varchar(128) DEFAULT NULL,
     name varchar(100) DEFAULT NULL,
     first_name_length int DEFAULT NULL,
diff --git a/account/src/main/resources/org/killbill/billing/account/migration/V20161004171445__account_external_keys.sql b/account/src/main/resources/org/killbill/billing/account/migration/V20161004171445__account_external_keys.sql
new file mode 100644
index 0000000..1809a23
--- /dev/null
+++ b/account/src/main/resources/org/killbill/billing/account/migration/V20161004171445__account_external_keys.sql
@@ -0,0 +1,2 @@
+alter table accounts modify external_key varchar(255);
+alter table account_history modify external_key varchar(255);
\ No newline at end of file
diff --git a/payment/src/main/resources/org/killbill/billing/payment/ddl.sql b/payment/src/main/resources/org/killbill/billing/payment/ddl.sql
index fef6bd7..25af914 100644
--- a/payment/src/main/resources/org/killbill/billing/payment/ddl.sql
+++ b/payment/src/main/resources/org/killbill/billing/payment/ddl.sql
@@ -6,9 +6,9 @@ CREATE TABLE payment_attempts (
     id varchar(36) NOT NULL,
     account_id varchar(36) NOT NULL,
     payment_method_id varchar(36) DEFAULT NULL,
-    payment_external_key varchar(128) NOT NULL,
+    payment_external_key varchar(255) NOT NULL,
     transaction_id varchar(36),
-    transaction_external_key varchar(128) NOT NULL,
+    transaction_external_key varchar(255) NOT NULL,
     transaction_type varchar(32) NOT NULL,
     state_name varchar(32) NOT NULL,
     amount numeric(15,9),
@@ -37,9 +37,9 @@ CREATE TABLE payment_attempt_history (
     target_record_id bigint /*! unsigned */ not null,
     account_id varchar(36) NOT NULL,
     payment_method_id varchar(36) DEFAULT NULL,
-    payment_external_key varchar(128) NOT NULL,
+    payment_external_key varchar(255) NOT NULL,
     transaction_id varchar(36),
-    transaction_external_key varchar(128) NOT NULL,
+    transaction_external_key varchar(255) NOT NULL,
     transaction_type varchar(32) NOT NULL,
     state_name varchar(32) NOT NULL,
     amount numeric(15,9),
diff --git a/payment/src/main/resources/org/killbill/billing/payment/migration/V20161005110745__payment_external_keys.sql b/payment/src/main/resources/org/killbill/billing/payment/migration/V20161005110745__payment_external_keys.sql
new file mode 100644
index 0000000..b5ccf70
--- /dev/null
+++ b/payment/src/main/resources/org/killbill/billing/payment/migration/V20161005110745__payment_external_keys.sql
@@ -0,0 +1,4 @@
+alter table payment_attempts modify payment_external_key varchar(255);
+alter table payment_attempts modify transaction_external_key varchar(255);
+alter table payment_attempt_history modify payment_external_key varchar(255);
+alter table payment_attempt_history modify transaction_external_key varchar(255);
\ No newline at end of file

pom.xml 2(+1 -1)

diff --git a/pom.xml b/pom.xml
index 77300c1..4abb7b2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <artifactId>killbill-oss-parent</artifactId>
         <groupId>org.kill-bill.billing</groupId>
-        <version>0.129</version>
+        <version>0.130-SNAPSHOT</version>
     </parent>
     <artifactId>killbill</artifactId>
     <version>0.17.5-SNAPSHOT</version>
diff --git a/subscription/src/main/java/org/killbill/billing/subscription/api/svcs/DefaultSubscriptionInternalApi.java b/subscription/src/main/java/org/killbill/billing/subscription/api/svcs/DefaultSubscriptionInternalApi.java
index fcc771d..016211d 100644
--- a/subscription/src/main/java/org/killbill/billing/subscription/api/svcs/DefaultSubscriptionInternalApi.java
+++ b/subscription/src/main/java/org/killbill/billing/subscription/api/svcs/DefaultSubscriptionInternalApi.java
@@ -18,6 +18,7 @@
 
 package org.killbill.billing.subscription.api.svcs;
 
+import java.sql.SQLDataException;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
@@ -318,7 +319,15 @@ public class DefaultSubscriptionInternalApi extends SubscriptionApiBase implemen
         final DateTime now = clock.getUTCNow();
         final DateTime originalCreatedDate = existingBundles.size() > 0 ? existingBundles.get(0).getCreatedDate() : now;
         final DefaultSubscriptionBaseBundle bundle = new DefaultSubscriptionBaseBundle(bundleKey, accountId, now, originalCreatedDate, now, now);
-        return dao.createSubscriptionBundle(bundle, context);
+        SubscriptionBaseBundle subscriptionBundle = null;
+        try {
+            subscriptionBundle = dao.createSubscriptionBundle(bundle, context);
+        } catch (final Exception e) {
+            if (e.getCause() instanceof SQLDataException) {
+                throw new SubscriptionBaseApiException(e, ErrorCode.EXTERNAL_KEY_LIMIT_EXCEEDED);
+            }
+        }
+        return subscriptionBundle;
     }
 
     @Override
diff --git a/subscription/src/main/resources/org/killbill/billing/subscription/ddl.sql b/subscription/src/main/resources/org/killbill/billing/subscription/ddl.sql
index 9e5e0c6..80abc65 100644
--- a/subscription/src/main/resources/org/killbill/billing/subscription/ddl.sql
+++ b/subscription/src/main/resources/org/killbill/billing/subscription/ddl.sql
@@ -52,7 +52,7 @@ DROP TABLE IF EXISTS bundles;
 CREATE TABLE bundles (
     record_id serial unique,
     id varchar(36) NOT NULL,
-    external_key varchar(64) NOT NULL,
+    external_key varchar(255) NOT NULL,
     account_id varchar(36) NOT NULL,
     last_sys_update_date datetime,
     original_created_date datetime NOT NULL,
diff --git a/subscription/src/main/resources/org/killbill/billing/subscription/migration/V20161005110304__bundles_external_key.sql b/subscription/src/main/resources/org/killbill/billing/subscription/migration/V20161005110304__bundles_external_key.sql
new file mode 100644
index 0000000..d8aef66
--- /dev/null
+++ b/subscription/src/main/resources/org/killbill/billing/subscription/migration/V20161005110304__bundles_external_key.sql
@@ -0,0 +1 @@
+alter table bundles modify external_key varchar(255);
\ No newline at end of file
diff --git a/tenant/src/main/java/org/killbill/billing/tenant/api/user/DefaultTenantUserApi.java b/tenant/src/main/java/org/killbill/billing/tenant/api/user/DefaultTenantUserApi.java
index 0282ffd..5a79da9 100644
--- a/tenant/src/main/java/org/killbill/billing/tenant/api/user/DefaultTenantUserApi.java
+++ b/tenant/src/main/java/org/killbill/billing/tenant/api/user/DefaultTenantUserApi.java
@@ -18,6 +18,7 @@
 
 package org.killbill.billing.tenant.api.user;
 
+import java.sql.SQLDataException;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -89,8 +90,11 @@ public class DefaultTenantUserApi implements TenantUserApi {
 
         try {
             tenantDao.create(new TenantModelDao(tenant), internalCallContextFactory.createInternalCallContextWithoutAccountRecordId(context));
-        } catch (final TenantApiException e) {
-            throw new TenantApiException(e, ErrorCode.TENANT_CREATION_FAILED);
+        } catch (final Exception e) {
+            if (e.getCause() instanceof SQLDataException) {
+                throw new TenantApiException(e, ErrorCode.EXTERNAL_KEY_LIMIT_EXCEEDED);
+            }
+            else throw new TenantApiException(e, ErrorCode.TENANT_CREATION_FAILED);
         }
         return tenant;
     }
diff --git a/tenant/src/main/resources/org/killbill/billing/tenant/ddl.sql b/tenant/src/main/resources/org/killbill/billing/tenant/ddl.sql
index 6e34285..988714f 100644
--- a/tenant/src/main/resources/org/killbill/billing/tenant/ddl.sql
+++ b/tenant/src/main/resources/org/killbill/billing/tenant/ddl.sql
@@ -4,7 +4,7 @@ DROP TABLE IF EXISTS tenants;
 CREATE TABLE tenants (
     record_id serial unique,
     id varchar(36) NOT NULL,
-    external_key varchar(128) NULL,
+    external_key varchar(255) NULL,
     api_key varchar(128) NULL,
     api_secret varchar(128) NULL,
     api_salt varchar(128) NULL,
diff --git a/tenant/src/main/resources/org/killbill/billing/tenant/migration/V20161005110145__tenant_external_key.sql b/tenant/src/main/resources/org/killbill/billing/tenant/migration/V20161005110145__tenant_external_key.sql
new file mode 100644
index 0000000..fc6765f
--- /dev/null
+++ b/tenant/src/main/resources/org/killbill/billing/tenant/migration/V20161005110145__tenant_external_key.sql
@@ -0,0 +1 @@
+alter table tenants modify external_key varchar(255);
\ No newline at end of file