killbill-memoizeit
Changes
account/src/main/resources/org/killbill/billing/account/migration/V20161004171445__account_external_keys.sql 2(+2 -0)
payment/src/main/resources/org/killbill/billing/payment/migration/V20161005110745__payment_external_keys.sql 4(+4 -0)
pom.xml 2(+1 -1)
subscription/src/main/java/org/killbill/billing/subscription/api/svcs/DefaultSubscriptionInternalApi.java 11(+10 -1)
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