killbill-aplcache

account: remove the ability to create tags during account creation/migration We

6/11/2012 4:35:53 PM

Details

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 c6cea33..d7d8049 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
@@ -16,7 +16,6 @@
 
 package com.ning.billing.account.api.user;
 
-import javax.annotation.Nullable;
 import java.util.List;
 import java.util.UUID;
 
@@ -35,46 +34,26 @@ import com.ning.billing.account.dao.AccountDao;
 import com.ning.billing.account.dao.AccountEmailDao;
 import com.ning.billing.util.callcontext.CallContext;
 import com.ning.billing.util.callcontext.CallContextFactory;
-import com.ning.billing.util.customfield.CustomField;
-import com.ning.billing.util.customfield.dao.CustomFieldDao;
-import com.ning.billing.util.dao.ObjectType;
 import com.ning.billing.util.entity.EntityPersistenceException;
-import com.ning.billing.util.tag.TagDefinition;
-import com.ning.billing.util.tag.dao.TagDao;
 
 public class DefaultAccountUserApi implements AccountUserApi {
     private final CallContextFactory factory;
     private final AccountDao accountDao;
     private final AccountEmailDao accountEmailDao;
-    private final TagDao tagDao;
-    private final CustomFieldDao customFieldDao;
 
     @Inject
-    public DefaultAccountUserApi(final CallContextFactory factory, final AccountDao accountDao,
-                                 final AccountEmailDao accountEmailDao, final TagDao tagDao,
-                                 final CustomFieldDao customFieldDao) {
+    public DefaultAccountUserApi(final CallContextFactory factory, final AccountDao accountDao, final AccountEmailDao accountEmailDao) {
         this.factory = factory;
         this.accountDao = accountDao;
         this.accountEmailDao = accountEmailDao;
-        this.tagDao = tagDao;
-        this.customFieldDao = customFieldDao;
     }
 
     @Override
-    public Account createAccount(final AccountData data, @Nullable final List<CustomField> fields,
-                                 @Nullable final List<TagDefinition> tagDefinitions, final CallContext context) throws AccountApiException {
+    public Account createAccount(final AccountData data, final CallContext context) throws AccountApiException {
         final Account account = new DefaultAccount(data);
 
         try {
-            // TODO: move this into a transaction?
             accountDao.create(account, context);
-            if (tagDefinitions != null) {
-                tagDao.insertTags(account.getId(), ObjectType.ACCOUNT, tagDefinitions, context);
-            }
-
-            if (fields != null) {
-                customFieldDao.saveEntities(account.getId(), ObjectType.ACCOUNT, fields, context);
-            }
         } catch (EntityPersistenceException e) {
             throw new AccountApiException(e, ErrorCode.ACCOUNT_CREATION_FAILED);
         }
@@ -141,8 +120,7 @@ public class DefaultAccountUserApi implements AccountUserApi {
     }
 
     @Override
-    public Account migrateAccount(final MigrationAccountData data, final List<CustomField> fields,
-                                  final List<TagDefinition> tagDefinitions, final CallContext context)
+    public Account migrateAccount(final MigrationAccountData data, final CallContext context)
             throws AccountApiException {
         final DateTime createdDate = data.getCreatedDate() == null ? context.getCreatedDate() : data.getCreatedDate();
         final DateTime updatedDate = data.getUpdatedDate() == null ? context.getUpdatedDate() : data.getUpdatedDate();
@@ -150,10 +128,7 @@ public class DefaultAccountUserApi implements AccountUserApi {
         final Account account = new DefaultAccount(data);
 
         try {
-            // TODO: move this into a transaction?
             accountDao.create(account, migrationContext);
-            tagDao.insertTags(account.getId(), ObjectType.ACCOUNT, tagDefinitions, context);
-            customFieldDao.saveEntities(account.getId(), ObjectType.ACCOUNT, fields, context);
         } catch (EntityPersistenceException e) {
             throw new AccountApiException(e, ErrorCode.ACCOUNT_CREATION_FAILED);
         }
diff --git a/account/src/test/java/com/ning/billing/account/api/MockAccountUserApi.java b/account/src/test/java/com/ning/billing/account/api/MockAccountUserApi.java
index 77504db..3cb427f 100644
--- a/account/src/test/java/com/ning/billing/account/api/MockAccountUserApi.java
+++ b/account/src/test/java/com/ning/billing/account/api/MockAccountUserApi.java
@@ -59,8 +59,7 @@ public class MockAccountUserApi implements AccountUserApi {
 	}
 
     @Override
-    public Account createAccount(final AccountData data, final List<CustomField> fields,
-                                 final List<TagDefinition> tagDefinitions, final CallContext context) throws AccountApiException {
+    public Account createAccount(final AccountData data, final CallContext context) throws AccountApiException {
         Account result = new DefaultAccount(data);
         accounts.add(result);
         return result;
@@ -117,8 +116,7 @@ public class MockAccountUserApi implements AccountUserApi {
     }
 
 	@Override
-	public Account migrateAccount(final MigrationAccountData data,
-			final List<CustomField> fields, final List<TagDefinition> tagDefinitions, final CallContext context)
+	public Account migrateAccount(final MigrationAccountData data, final CallContext context)
 			throws AccountApiException {
 		Account result = new DefaultAccount(data);
         accounts.add(result);
diff --git a/account/src/test/java/com/ning/billing/account/api/user/TestDefaultAccountUserApi.java b/account/src/test/java/com/ning/billing/account/api/user/TestDefaultAccountUserApi.java
index 73fffbd..e3e2f84 100644
--- a/account/src/test/java/com/ning/billing/account/api/user/TestDefaultAccountUserApi.java
+++ b/account/src/test/java/com/ning/billing/account/api/user/TestDefaultAccountUserApi.java
@@ -16,7 +16,6 @@
 
 package com.ning.billing.account.api.user;
 
-import java.util.Map;
 import java.util.UUID;
 
 import org.joda.time.DateTimeZone;
@@ -25,7 +24,6 @@ import org.testng.Assert;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
-import com.google.common.collect.ImmutableList;
 import com.ning.billing.account.api.Account;
 import com.ning.billing.account.api.AccountData;
 import com.ning.billing.account.api.DefaultAccount;
@@ -36,14 +34,6 @@ import com.ning.billing.catalog.api.Currency;
 import com.ning.billing.util.bus.Bus;
 import com.ning.billing.util.callcontext.CallContext;
 import com.ning.billing.util.callcontext.CallContextFactory;
-import com.ning.billing.util.customfield.dao.CustomFieldDao;
-import com.ning.billing.util.customfield.dao.MockCustomFieldDao;
-import com.ning.billing.util.dao.ObjectType;
-import com.ning.billing.util.tag.DefaultTagDefinition;
-import com.ning.billing.util.tag.Tag;
-import com.ning.billing.util.tag.TagDefinition;
-import com.ning.billing.util.tag.dao.MockTagDao;
-import com.ning.billing.util.tag.dao.TagDao;
 
 public class TestDefaultAccountUserApi {
     private final CallContextFactory factory = Mockito.mock(CallContextFactory.class);
@@ -51,19 +41,16 @@ public class TestDefaultAccountUserApi {
     private final AccountEmailDao accountEmailDao = Mockito.mock(AccountEmailDao.class);
 
     private AccountDao accountDao;
-    private TagDao tagDao;
     private DefaultAccountUserApi accountUserApi;
 
     @BeforeMethod(groups = "fast")
     public void setUp() throws Exception {
         accountDao = new MockAccountDao(Mockito.mock(Bus.class));
-        tagDao = new MockTagDao();
-        final CustomFieldDao customFieldDao = new MockCustomFieldDao();
-        accountUserApi = new DefaultAccountUserApi(factory, accountDao, accountEmailDao, tagDao, customFieldDao);
+        accountUserApi = new DefaultAccountUserApi(factory, accountDao, accountEmailDao);
     }
 
     @Test(groups = "fast")
-    public void testCreateWithTag() throws Exception {
+    public void testCreateAccount() throws Exception {
         final UUID id = UUID.randomUUID();
         final String externalKey = UUID.randomUUID().toString();
         final String email = UUID.randomUUID().toString();
@@ -88,10 +75,7 @@ public class TestDefaultAccountUserApi {
                                                     paymentMethodId, timeZone, locale, address1, address2, companyName,
                                                     city, stateOrProvince, country, postalCode, phone, isMigrated, isNotifiedForInvoices);
 
-        final String tagName = UUID.randomUUID().toString();
-        final String tagDescription = UUID.randomUUID().toString();
-        final TagDefinition tagDefinition = new DefaultTagDefinition(tagName, tagDescription, true);
-        accountUserApi.createAccount(data, null, ImmutableList.<TagDefinition>of(tagDefinition), callContext);
+        accountUserApi.createAccount(data, callContext);
 
         final Account account = accountDao.getAccountByKey(externalKey);
         Assert.assertEquals(account.getExternalKey(), externalKey);
@@ -113,9 +97,5 @@ public class TestDefaultAccountUserApi {
         Assert.assertEquals(account.getPhone(), phone);
         Assert.assertEquals(account.isMigrated(), isMigrated);
         Assert.assertEquals(account.isNotifiedForInvoices(), isNotifiedForInvoices);
-
-        final Map<String, Tag> tags = tagDao.loadEntities(account.getId(), ObjectType.ACCOUNT);
-        Assert.assertEquals(tags.keySet().size(), 1);
-        Assert.assertEquals(tags.get(tagName).getTagDefinitionName(), tagName);
     }
 }
diff --git a/analytics/src/test/java/com/ning/billing/analytics/api/TestAnalyticsService.java b/analytics/src/test/java/com/ning/billing/analytics/api/TestAnalyticsService.java
index 386d004..0094ca4 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/api/TestAnalyticsService.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/api/TestAnalyticsService.java
@@ -19,12 +19,9 @@ package com.ning.billing.analytics.api;
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 import java.util.UUID;
 
-
 import org.joda.time.DateTime;
 import org.mockito.Mockito;
 import org.testng.Assert;
@@ -88,11 +85,6 @@ import com.ning.billing.util.callcontext.DefaultCallContextFactory;
 import com.ning.billing.util.callcontext.UserType;
 import com.ning.billing.util.clock.Clock;
 import com.ning.billing.util.clock.DefaultClock;
-import com.ning.billing.util.tag.DefaultTagDefinition;
-import com.ning.billing.util.tag.TagDefinition;
-import com.ning.billing.util.tag.dao.AuditedTagDao;
-import com.ning.billing.util.tag.dao.TagDao;
-import com.ning.billing.util.tag.dao.TagDefinitionSqlDao;
 
 import static org.testng.Assert.fail;
 
@@ -106,11 +98,7 @@ public class TestAnalyticsService extends TestWithEmbeddedDB {
     private static final String KEY = "12345";
     private static final String ACCOUNT_KEY = "pierre-12345";
     private static final Currency ACCOUNT_CURRENCY = Currency.EUR;
-    private static final DefaultTagDefinition TAG_ONE = new DefaultTagDefinition("batch20", "something", false);
-    private static final DefaultTagDefinition TAG_TWO = new DefaultTagDefinition("awesome", "something", false);
     private static final BigDecimal INVOICE_AMOUNT = BigDecimal.valueOf(1243.11);
-    private static final String PAYMENT_METHOD = "Paypal";
-    private static final String CARD_COUNTRY = "France";
 
     private final Clock clock = new DefaultClock();
     private final CallContext context = new DefaultCallContextFactory(clock).createCallContext("Analytics Test", CallOrigin.TEST, UserType.TEST);
@@ -122,9 +110,6 @@ public class TestAnalyticsService extends TestWithEmbeddedDB {
     private EntitlementUserApi entitlementApi;
 
     @Inject
-    private TagDefinitionSqlDao tagDao;
-
-    @Inject
     private InvoiceDao invoiceDao;
 
     @Inject
@@ -166,16 +151,9 @@ public class TestAnalyticsService extends TestWithEmbeddedDB {
 
     @BeforeMethod(groups = "slow")
     public void createMocks() {
-        tagDao.create(TAG_ONE, context);
-        tagDao.create(TAG_TWO, context);
-
         final MockAccount account = new MockAccount(UUID.randomUUID(), ACCOUNT_KEY, ACCOUNT_CURRENCY);
         try {
-            final List<TagDefinition> tagDefinitions = new ArrayList<TagDefinition>();
-            tagDefinitions.add(TAG_ONE);
-            tagDefinitions.add(TAG_TWO);
-
-            final Account storedAccount = accountApi.createAccount(account, null, tagDefinitions, context);
+            final Account storedAccount = accountApi.createAccount(account, context);
 
             // Create events for the bus and expected results
             createSubscriptionTransitionEvent(storedAccount);
@@ -248,10 +226,10 @@ public class TestAnalyticsService extends TestWithEmbeddedDB {
 
         // It doesn't really matter what the events contain - the listener will go back to the db
         invoiceCreationNotification = new DefaultInvoiceCreationEvent(invoice.getId(), account.getId(),
-                INVOICE_AMOUNT, ACCOUNT_CURRENCY, clock.getUTCNow(), null);
+                                                                      INVOICE_AMOUNT, ACCOUNT_CURRENCY, clock.getUTCNow(), null);
 
         paymentInfoNotification = new DefaultPaymentInfoEvent(account.getId(), invoices.get(0).getId(), null, invoices.get(0).getBalance(), -1, PaymentStatus.UNKNOWN, null, new DateTime());
-        
+
         //STEPH talk to Pierre
         /*
         paymentInfoNotification = new DefaultPaymentInfoEvent.Builder().setId(UUID.randomUUID()).setExternalPaymentId("12345abcdef").setPaymentMethod(PAYMENT_METHOD).setCardCountry(CARD_COUNTRY).build();
@@ -271,7 +249,7 @@ public class TestAnalyticsService extends TestWithEmbeddedDB {
 
 
     // STEPH talk to Pierre -- see previous remark hence disable test
-    @Test(groups = "slow", enabled=true)
+    @Test(groups = "slow", enabled = true)
     public void testRegisterForNotifications() throws Exception {
         // Make sure the service has been instantiated
         Assert.assertEquals(service.getName(), "analytics-service");
@@ -293,12 +271,6 @@ public class TestAnalyticsService extends TestWithEmbeddedDB {
         Assert.assertEquals(subscriptionDao.getTransitions(KEY).size(), 1);
         Assert.assertEquals(subscriptionDao.getTransitions(KEY).get(0), expectedTransition);
 
-//        Assert.assertEquals(accountDao.getAccount(ACCOUNT_KEY).getKey(), ACCOUNT_KEY);
-//        Assert.assertEquals(accountDao.getAccount(ACCOUNT_KEY).getTags().size(), 2);
-//        Assert.assertTrue(accountDao.getAccount(ACCOUNT_KEY).getTags().indexOf(TAG_ONE.getName()) != -1);
-//        Assert.assertTrue(accountDao.getAccount(ACCOUNT_KEY).getTags().indexOf(TAG_TWO.getName()) != -1);
-        TagDao tagDao = new AuditedTagDao(helper.getDBI());
-
         // Test invoice integration - the account creation notification has triggered a BAC update
         Assert.assertTrue(accountDao.getAccount(ACCOUNT_KEY).getTotalInvoiceBalance().compareTo(INVOICE_AMOUNT) == 0);
 
diff --git a/analytics/src/test/java/com/ning/billing/analytics/MockAccountUserApi.java b/analytics/src/test/java/com/ning/billing/analytics/MockAccountUserApi.java
index d650fe2..a758681 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/MockAccountUserApi.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/MockAccountUserApi.java
@@ -43,8 +43,7 @@ public class MockAccountUserApi implements AccountUserApi {
     }
 
     @Override
-    public Account createAccount(final AccountData data, final List<CustomField> fields,
-                                 final List<TagDefinition> tagDefinitions, final CallContext context) {
+    public Account createAccount(final AccountData data, final CallContext context) {
         throw new UnsupportedOperationException();
     }
 
@@ -84,8 +83,7 @@ public class MockAccountUserApi implements AccountUserApi {
     }
 
     @Override
-    public Account migrateAccount(MigrationAccountData data,
-                                  List<CustomField> fields, List<TagDefinition> tagDefinitions, final CallContext context)
+    public Account migrateAccount(MigrationAccountData data, final CallContext context)
             throws AccountApiException {
         throw new UnsupportedOperationException();
     }
diff --git a/api/src/main/java/com/ning/billing/account/api/AccountUserApi.java b/api/src/main/java/com/ning/billing/account/api/AccountUserApi.java
index 89e5f70..5cea963 100644
--- a/api/src/main/java/com/ning/billing/account/api/AccountUserApi.java
+++ b/api/src/main/java/com/ning/billing/account/api/AccountUserApi.java
@@ -26,11 +26,9 @@ import com.ning.billing.util.tag.TagDefinition;
 import javax.annotation.Nullable;
 
 public interface AccountUserApi {
-    public Account createAccount(AccountData data, @Nullable List<CustomField> fields,
-                                 @Nullable List<TagDefinition> tagDefinitions, CallContext context) throws AccountApiException;
+    public Account createAccount(AccountData data, CallContext context) throws AccountApiException;
 
-    public Account migrateAccount(MigrationAccountData data, @Nullable List<CustomField> fields,
-                                  @Nullable List<TagDefinition> tagDefinitions, CallContext context) throws AccountApiException;
+    public Account migrateAccount(MigrationAccountData data, CallContext context) throws AccountApiException;
 
     /***
      *
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegrationBase.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegrationBase.java
index fda34cb..f63d6d6 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegrationBase.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegrationBase.java
@@ -261,7 +261,7 @@ public class TestIntegrationBase implements TestListenerStatus {
     }
     
     protected Account createAccountWithPaymentMethod(AccountData accountData) throws Exception {
-        Account account = accountUserApi.createAccount(accountData, null, null, context);
+        Account account = accountUserApi.createAccount(accountData, context);
         assertNotNull(account);
         
         PaymentMethodPlugin info = new PaymentMethodPlugin() {
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/AccountResource.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/AccountResource.java
index bdd3e58..dc38f73 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/AccountResource.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/AccountResource.java
@@ -185,7 +185,7 @@ public class AccountResource extends JaxRsResourceBase {
 
         try {
             AccountData data = json.toAccountData();
-            final Account account = accountApi.createAccount(data, null, null, context.createContext(createdBy, reason, comment));
+            final Account account = accountApi.createAccount(data, context.createContext(createdBy, reason, comment));
             return uriBuilder.buildResponse(AccountResource.class, "getAccount", account.getId());
         } catch (AccountApiException e) {
             final String error = String.format("Failed to create account %s", json);
diff --git a/junction/src/main/java/com/ning/billing/junction/plumbing/api/BlockingAccountUserApi.java b/junction/src/main/java/com/ning/billing/junction/plumbing/api/BlockingAccountUserApi.java
index 45e3d5c..6a36e2f 100644
--- a/junction/src/main/java/com/ning/billing/junction/plumbing/api/BlockingAccountUserApi.java
+++ b/junction/src/main/java/com/ning/billing/junction/plumbing/api/BlockingAccountUserApi.java
@@ -43,15 +43,14 @@ public class BlockingAccountUserApi implements AccountUserApi {
     }
 
     @Override
-    public Account createAccount(AccountData data, List<CustomField> fields, List<TagDefinition> tagDefinitions, CallContext context)
+    public Account createAccount(AccountData data, CallContext context)
             throws AccountApiException {
-        return userApi.createAccount(data, fields, tagDefinitions, context);
+        return userApi.createAccount(data, context);
     }
 
     @Override
-    public Account migrateAccount(MigrationAccountData data, List<CustomField> fields, List<TagDefinition> tagDefinitions,
-            CallContext context) throws AccountApiException {
-        return userApi.migrateAccount(data, fields, tagDefinitions, context);
+    public Account migrateAccount(MigrationAccountData data, CallContext context) throws AccountApiException {
+        return userApi.migrateAccount(data, context);
     }
 
     @Override