killbill-uncached

Details

diff --git a/account/src/main/java/com/ning/billing/account/api/DefaultAccount.java b/account/src/main/java/com/ning/billing/account/api/DefaultAccount.java
index d5cc7d4..70fd6cb 100644
--- a/account/src/main/java/com/ning/billing/account/api/DefaultAccount.java
+++ b/account/src/main/java/com/ning/billing/account/api/DefaultAccount.java
@@ -31,15 +31,17 @@ public class DefaultAccount extends CustomizableEntityBase implements Account {
     private final String phone;
     private final Currency currency;
     private final int billCycleDay;
+    private final String paymentProviderName;
     private final DefaultTagStore tags;
 
     public DefaultAccount(AccountData data) {
         this(UUID.randomUUID(), data.getExternalKey(), data.getEmail(), data.getName(),
-                data.getFirstNameLength(), data.getPhone(), data.getCurrency(), data.getBillCycleDay());
+                data.getFirstNameLength(), data.getPhone(), data.getCurrency(), data.getBillCycleDay(),
+                data.getPaymentProviderName());
     }
 
     public DefaultAccount(UUID id, String externalKey, String email, String name, int firstNameLength,
-                          String phone, Currency currency, int billCycleDay) {
+                          String phone, Currency currency, int billCycleDay, String paymentProviderName) {
         super(id);
         this.externalKey = externalKey;
         this.email = email;
@@ -48,6 +50,7 @@ public class DefaultAccount extends CustomizableEntityBase implements Account {
         this.phone = phone;
         this.currency = currency;
         this.billCycleDay = billCycleDay;
+        this.paymentProviderName = paymentProviderName;
 
         this.tags = new DefaultTagStore(id, getObjectName());
     }
@@ -93,6 +96,11 @@ public class DefaultAccount extends CustomizableEntityBase implements Account {
     }
 
     @Override
+    public String getPaymentProviderName() {
+        return paymentProviderName;
+    }
+
+    @Override
     public List<Tag> getTagList() {
         return tags.getEntityList();
     }
diff --git a/account/src/main/java/com/ning/billing/account/api/user/AccountBuilder.java b/account/src/main/java/com/ning/billing/account/api/user/AccountBuilder.java
index 9737deb..873b690 100644
--- a/account/src/main/java/com/ning/billing/account/api/user/AccountBuilder.java
+++ b/account/src/main/java/com/ning/billing/account/api/user/AccountBuilder.java
@@ -30,6 +30,7 @@ public class AccountBuilder {
     private String phone;
     private Currency currency;
     private int billingCycleDay;
+    private String paymentProviderName;
 
     public AccountBuilder() {
         this(UUID.randomUUID());
@@ -74,7 +75,12 @@ public class AccountBuilder {
         return this;
     }
 
+    public AccountBuilder paymentProviderName(String paymentProviderName) {
+        this.paymentProviderName = paymentProviderName;
+        return this;
+    }
+
     public DefaultAccount build() {
-        return new DefaultAccount(id, externalKey, email, name, firstNameLength, phone, currency, billingCycleDay);
+        return new DefaultAccount(id, externalKey, email, name, firstNameLength, phone, currency, billingCycleDay, paymentProviderName);
     }
 }
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 831dab2..c6cfbf3 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
@@ -22,12 +22,21 @@ import com.ning.billing.account.api.user.AccountBuilder;
 import com.ning.billing.catalog.api.Currency;
 import org.skife.jdbi.v2.SQLStatement;
 import org.skife.jdbi.v2.StatementContext;
-import org.skife.jdbi.v2.sqlobject.*;
+import org.skife.jdbi.v2.sqlobject.Bind;
+import org.skife.jdbi.v2.sqlobject.Binder;
+import org.skife.jdbi.v2.sqlobject.BinderFactory;
+import org.skife.jdbi.v2.sqlobject.BindingAnnotation;
+import org.skife.jdbi.v2.sqlobject.SqlQuery;
+import org.skife.jdbi.v2.sqlobject.SqlUpdate;
 import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper;
 import org.skife.jdbi.v2.sqlobject.stringtemplate.ExternalizedSqlViaStringTemplate3;
 import org.skife.jdbi.v2.tweak.ResultSetMapper;
 
-import java.lang.annotation.*;
+import java.lang.annotation.Annotation;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.util.UUID;
@@ -53,11 +62,13 @@ public interface AccountDao extends EntityDao<Account> {
             String phone = result.getString("phone");
             int billingCycleDay = result.getInt("billing_cycle_day");
             Currency currency = Currency.valueOf(result.getString("currency"));
+            String paymentProviderName = result.getString("payment_provider_name");
 
             return new AccountBuilder(id).externalKey(externalKey).email(email)
                                          .name(name).firstNameLength(firstNameLength)
                                          .phone(phone).currency(currency)
-                                         .billingCycleDay(billingCycleDay).build();
+                                         .billingCycleDay(billingCycleDay)
+                                         .paymentProviderName(paymentProviderName).build();
         }
     }
 
@@ -77,6 +88,7 @@ public interface AccountDao extends EntityDao<Account> {
                         q.bind("phone", account.getPhone());
                         q.bind("currency", account.getCurrency().toString());
                         q.bind("billingCycleDay", account.getBillCycleDay());
+                        q.bind("paymentProviderName", account.getPaymentProviderName());
                     }
                 };
             }
diff --git a/account/src/main/java/com/ning/billing/account/dao/AccountDaoWrapper.java b/account/src/main/java/com/ning/billing/account/dao/AccountDaoWrapper.java
index 8bf8b66..9c819b5 100644
--- a/account/src/main/java/com/ning/billing/account/dao/AccountDaoWrapper.java
+++ b/account/src/main/java/com/ning/billing/account/dao/AccountDaoWrapper.java
@@ -29,7 +29,7 @@ import com.ning.billing.account.api.CustomField;
 import com.ning.billing.account.api.DefaultAccount;
 import com.ning.billing.account.api.FieldStore;
 import com.ning.billing.account.api.Tag;
-import com.ning.billing.account.api.user.AccountChangeEventDefault;
+import com.ning.billing.account.api.user.AccountChangeNotificationDefault;
 import com.ning.billing.account.api.user.AccountCreationEventDefault;
 import com.ning.billing.util.eventbus.EventBus;
 
@@ -155,7 +155,7 @@ public class AccountDaoWrapper implements AccountDao {
                         AccountCreationNotification creationEvent = new AccountCreationEventDefault(account);
                         eventBus.post(creationEvent);
                     } else {
-                        AccountChangeNotification changeEvent = new AccountChangeEventDefault(account.getId(), currentAccount, account);
+                        AccountChangeNotification changeEvent = new AccountChangeNotificationDefault(account.getId(), currentAccount, account);
                         if (changeEvent.hasChanges()) {
                             eventBus.post(changeEvent);
                         }
diff --git a/account/src/main/resources/com/ning/billing/account/dao/AccountDao.sql.stg b/account/src/main/resources/com/ning/billing/account/dao/AccountDao.sql.stg
index 8be70d4..33d60b8 100644
--- a/account/src/main/resources/com/ning/billing/account/dao/AccountDao.sql.stg
+++ b/account/src/main/resources/com/ning/billing/account/dao/AccountDao.sql.stg
@@ -1,27 +1,29 @@
 group AccountDaoSql;
 
 save() ::= <<
-    INSERT INTO accounts (id, external_key, email, name, first_name_length, phone, currency, billing_cycle_day)
-    VALUES (:id, :externalKey, :email, :name, :firstNameLength, :phone, :currency, :billingCycleDay)
+    INSERT INTO accounts
+    (id, external_key, email, name, first_name_length, phone, currency, billing_cycle_day, payment_provider_name)
+    VALUES
+    (:id, :externalKey, :email, :name, :firstNameLength, :phone, :currency, :billingCycleDay, :paymentProviderName)
     ON DUPLICATE KEY UPDATE
       external_key = :externalKey, email = :email, name = :name, first_name_length = :firstNameLength,
-      phone = :phone, currency = :currency;
+      phone = :phone, currency = :currency, payment_provider_name = :paymentProviderName;
 >>
 
 getAccountByKey() ::= <<
-    select id, external_key, email, name, first_name_length, phone, currency, billing_cycle_day
+    select id, external_key, email, name, first_name_length, phone, currency, billing_cycle_day, payment_provider_name
     from accounts
     where external_key = :externalKey;
 >>
 
 getById() ::= <<
-    select id, external_key, email, name, first_name_length, phone, currency, billing_cycle_day
+    select id, external_key, email, name, first_name_length, phone, currency, billing_cycle_day, payment_provider_name
     from accounts
     where id = :id;
 >>
 
 get() ::= <<
-    select id, external_key, email, name, first_name_length, phone, currency, billing_cycle_day
+    select id, external_key, email, name, first_name_length, phone, currency, billing_cycle_day, payment_provider_name
     from accounts;
 >>
 
diff --git a/account/src/main/resources/com/ning/billing/account/ddl.sql b/account/src/main/resources/com/ning/billing/account/ddl.sql
index 9975918..9bc2a03 100644
--- a/account/src/main/resources/com/ning/billing/account/ddl.sql
+++ b/account/src/main/resources/com/ning/billing/account/ddl.sql
@@ -8,6 +8,7 @@ CREATE TABLE accounts (
     phone varchar(13) DEFAULT NULL,
     currency char(3) NOT NULL,
     billing_cycle_day int NOT NULL,
+    payment_provider_name varchar(20),
     PRIMARY KEY(id)
 ) ENGINE=innodb;
 CREATE UNIQUE INDEX accounts_external_key ON accounts(external_key);
diff --git a/analytics/src/test/java/com/ning/billing/analytics/MockAccount.java b/analytics/src/test/java/com/ning/billing/analytics/MockAccount.java
index 7bb16fc..dbb7f8a 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/MockAccount.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/MockAccount.java
@@ -74,6 +74,11 @@ public class MockAccount implements AccountData
     }
 
     @Override
+    public String getPaymentProviderName() {
+        return "PayPal";
+    }
+
+    @Override
     public UUID getId()
     {
         return id;
diff --git a/api/src/main/java/com/ning/billing/account/api/AccountData.java b/api/src/main/java/com/ning/billing/account/api/AccountData.java
index b0f7dc4..cdcae52 100644
--- a/api/src/main/java/com/ning/billing/account/api/AccountData.java
+++ b/api/src/main/java/com/ning/billing/account/api/AccountData.java
@@ -33,4 +33,6 @@ public interface AccountData extends Entity{
     public int getBillCycleDay();
 
     public Currency getCurrency();
+
+    public String getPaymentProviderName();
 }
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiBase.java b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiBase.java
index 3a245d1..72d60aa 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiBase.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiBase.java
@@ -315,7 +315,10 @@ public abstract class TestUserApiBase {
             public Currency getCurrency() {
                 return Currency.USD;
             }
-
+            @Override
+            public String getPaymentProviderName() {
+                return "Paypal";
+            }
             @Override
             public UUID getId() {
                 return id;