killbill-memoizeit
Changes
analytics/src/main/java/com/ning/billing/analytics/BusinessSubscriptionTransitionRecorder.java 10(+5 -5)
entitlement/src/main/java/com/ning/billing/entitlement/api/billing/EntitlementBillingApi.java 4(+2 -2)
invoice/src/test/java/com/ning/billing/invoice/tests/inAdvance/ProRationInAdvanceTestBase.java 4(+2 -2)
Details
diff --git a/account/src/main/java/com/ning/billing/account/api/CustomizableEntityBase.java b/account/src/main/java/com/ning/billing/account/api/CustomizableEntityBase.java
index 40a78eb..1d81969 100644
--- a/account/src/main/java/com/ning/billing/account/api/CustomizableEntityBase.java
+++ b/account/src/main/java/com/ning/billing/account/api/CustomizableEntityBase.java
@@ -18,12 +18,12 @@ package com.ning.billing.account.api;
import java.util.UUID;
-public abstract class CustomizableEntityBase extends EntityBase implements ICustomizableEntity {
- protected final IFieldStore fields;
+public abstract class CustomizableEntityBase extends EntityBase implements CustomizableEntity {
+ protected final FieldStore fields;
public CustomizableEntityBase(UUID id) {
super(id);
- fields = FieldStore.create(getId(), getObjectName());
+ fields = StringFieldStore.create(getId(), getObjectName());
}
@Override
@@ -37,7 +37,7 @@ public abstract class CustomizableEntityBase extends EntityBase implements ICust
}
@Override
- public IFieldStore getFields() {
+ public FieldStore getFields() {
return fields;
}
diff --git a/account/src/main/java/com/ning/billing/account/api/EntityBase.java b/account/src/main/java/com/ning/billing/account/api/EntityBase.java
index 4fe8da2..375ff63 100644
--- a/account/src/main/java/com/ning/billing/account/api/EntityBase.java
+++ b/account/src/main/java/com/ning/billing/account/api/EntityBase.java
@@ -18,7 +18,7 @@ package com.ning.billing.account.api;
import java.util.UUID;
-public abstract class EntityBase<T> implements IEntity {
+public abstract class EntityBase<T> implements Entity {
protected final UUID id;
public EntityBase(UUID id) {
diff --git a/account/src/main/java/com/ning/billing/account/api/EntityCollectionBase.java b/account/src/main/java/com/ning/billing/account/api/EntityCollectionBase.java
index 2ed4f86..b3e7552 100644
--- a/account/src/main/java/com/ning/billing/account/api/EntityCollectionBase.java
+++ b/account/src/main/java/com/ning/billing/account/api/EntityCollectionBase.java
@@ -20,7 +20,7 @@ import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
-public abstract class EntityCollectionBase<T extends IEntity> implements IEntityCollection<T> {
+public abstract class EntityCollectionBase<T extends Entity> implements EntityCollection<T> {
protected Map<String, T> entities = new HashMap<String, T>();
protected final UUID objectId;
protected final String objectType;
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 75dea6d..5abe588 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
@@ -16,7 +16,7 @@
package com.ning.billing.account.api.user;
-import com.ning.billing.account.api.Account;
+import com.ning.billing.account.api.AccountDefault;
import com.ning.billing.catalog.api.Currency;
import java.util.UUID;
@@ -74,7 +74,7 @@ public class AccountBuilder {
return this;
}
- public Account build() {
- return new Account(id, externalKey, email, firstName, lastName, phone, currency, billCycleDay);
+ public AccountDefault build() {
+ return new AccountDefault(id, externalKey, email, firstName, lastName, phone, currency, billCycleDay);
}
}
diff --git a/account/src/main/java/com/ning/billing/account/api/user/AccountUserApi.java b/account/src/main/java/com/ning/billing/account/api/user/AccountUserApi.java
index 5cc9f87..c065783 100644
--- a/account/src/main/java/com/ning/billing/account/api/user/AccountUserApi.java
+++ b/account/src/main/java/com/ning/billing/account/api/user/AccountUserApi.java
@@ -18,44 +18,43 @@ package com.ning.billing.account.api.user;
import com.google.inject.Inject;
import com.ning.billing.account.api.Account;
-import com.ning.billing.account.api.IAccount;
-import com.ning.billing.account.api.IAccountData;
-import com.ning.billing.account.api.IAccountUserApi;
-import com.ning.billing.account.dao.IAccountDao;
+import com.ning.billing.account.api.AccountData;
+import com.ning.billing.account.api.AccountDefault;
+import com.ning.billing.account.dao.AccountDao;
import java.util.List;
import java.util.UUID;
-public class AccountUserApi implements IAccountUserApi {
- private final IAccountDao dao;
+public class AccountUserApi implements com.ning.billing.account.api.AccountUserApi {
+ private final AccountDao dao;
@Inject
- public AccountUserApi(IAccountDao dao) {
+ public AccountUserApi(AccountDao dao) {
this.dao = dao;
}
@Override
- public IAccount createAccount(IAccountData data) {
- return new Account(data);
+ public Account createAccount(AccountData data) {
+ return new AccountDefault(data);
}
@Override
- public IAccount getAccountByKey(String key) {
+ public Account getAccountByKey(String key) {
return dao.getAccountByKey(key);
}
@Override
- public IAccount getAccountById(UUID id) {
+ public Account getAccountById(UUID id) {
return dao.getById(id.toString());
}
@Override
- public List<IAccount> getAccounts() {
+ public List<Account> getAccounts() {
return dao.get();
}
@Override
- public void saveAccount(IAccount account) {
+ public void saveAccount(Account account) {
dao.save(account);
}
}
diff --git a/account/src/main/java/com/ning/billing/account/core/Engine.java b/account/src/main/java/com/ning/billing/account/core/Engine.java
index 6497353..4a750c9 100644
--- a/account/src/main/java/com/ning/billing/account/core/Engine.java
+++ b/account/src/main/java/com/ning/billing/account/core/Engine.java
@@ -16,9 +16,8 @@
package com.ning.billing.account.core;
-import com.ning.billing.account.api.IAccountChangeEvent;
-import com.ning.billing.account.api.IAccountService;
-import com.ning.billing.account.api.IAccountUserApi;
+import com.ning.billing.account.api.AccountService;
+import com.ning.billing.account.api.AccountUserApi;
import com.ning.billing.lifecycle.LyfecycleHandlerType;
import com.ning.billing.util.eventbus.IEventBus;
import org.slf4j.Logger;
@@ -26,15 +25,15 @@ import org.slf4j.LoggerFactory;
import javax.inject.Inject;
-public class Engine implements IAccountService, IAccountChangeListener {
+public class Engine implements AccountService {
private final static Logger log = LoggerFactory.getLogger(Engine.class);
private static final String ACCOUNT_SERVICE_NAME = "account-service";
private final IEventBus eventBus;
- private final IAccountUserApi userApi;
+ private final AccountUserApi userApi;
@Inject
- public Engine(IEventBus eventBus, IAccountUserApi userApi) {
+ public Engine(IEventBus eventBus, AccountUserApi userApi) {
this.eventBus = eventBus;
this.userApi = userApi;
}
@@ -52,7 +51,7 @@ public class Engine implements IAccountService, IAccountChangeListener {
}
@Override
- public IAccountUserApi getAccountUserApi() {
+ public AccountUserApi getAccountUserApi() {
return userApi;
}
@@ -60,13 +59,4 @@ public class Engine implements IAccountService, IAccountChangeListener {
public String getName() {
return ACCOUNT_SERVICE_NAME;
}
-
- @Override
- public void processAccountChange(IAccountChangeEvent changeEvent) {
- try {
- eventBus.post(changeEvent);
- } catch (IEventBus.EventBusException e) {
- log.warn("Failed to post account changeEvent event.");
- }
- }
}
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 b4d8dc3..1dbc8d9 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
@@ -16,124 +16,67 @@
package com.ning.billing.account.dao;
-import com.google.inject.Inject;
-import com.ning.billing.account.api.*;
-import com.ning.billing.account.api.user.AccountChangeEvent;
-import com.ning.billing.account.api.user.AccountCreationEvent;
-import com.ning.billing.util.eventbus.IEventBus;
-import org.skife.jdbi.v2.Handle;
-import org.skife.jdbi.v2.IDBI;
-import org.skife.jdbi.v2.TransactionCallback;
-import org.skife.jdbi.v2.TransactionStatus;
-
-import java.util.List;
-
-public class AccountDao implements IAccountDao {
- private final IAccountDao accountDao;
- private final IFieldStoreDao fieldStoreDao;
- private final IDBI dbi; // needed for transaction support
- private final IEventBus eventBus;
-
- @Inject
- public AccountDao(IDBI dbi, IEventBus eventBus) {
- this.dbi = dbi;
- this.eventBus = eventBus;
- this.accountDao = dbi.onDemand(IAccountDao.class);
- this.fieldStoreDao = dbi.onDemand(IFieldStoreDao.class);
- }
+import com.ning.billing.account.api.Account;
+import com.ning.billing.account.api.AccountDefault;
+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.customizers.RegisterMapper;
+import org.skife.jdbi.v2.sqlobject.stringtemplate.ExternalizedSqlViaStringTemplate3;
+import org.skife.jdbi.v2.tweak.ResultSetMapper;
+
+import java.lang.annotation.*;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.UUID;
+
+@ExternalizedSqlViaStringTemplate3
+@RegisterMapper(AccountDaoWrapper.AccountMapper.class)
+public interface AccountDao extends EntityDao<Account> {
+ @SqlQuery
+ public Account getAccountByKey(@Bind("externalKey") final String key);
@Override
- public IAccount getAccountByKey(String key) {
- IAccount account = accountDao.getAccountByKey(key);
- if (account != null) {
- loadFields(account);
+ @SqlUpdate
+ public void save(@AccountBinder Account account);
+
+ public static class AccountMapper implements ResultSetMapper<Account> {
+ @Override
+ public Account map(int index, ResultSet result, StatementContext context) throws SQLException {
+ UUID id = UUID.fromString(result.getString("id"));
+ String externalKey = result.getString("external_key");
+ String email = result.getString("email");
+ String firstName = result.getString("first_name");
+ String lastName = result.getString("last_name");
+ String phone = result.getString("phone");
+ Currency currency = Currency.valueOf(result.getString("currency"));
+
+ return new AccountBuilder(id).externalKey(externalKey).email(email)
+ .firstName(firstName).lastName(lastName)
+ .phone(phone).currency(currency).build();
}
- return account;
- }
-
- @Override
- public IAccount getById(String id) {
- IAccount account = accountDao.getById(id);
- if (account != null) {
- loadFields(account);
- }
- return account;
- }
-
- private void loadFields(IAccount account) {
- List<ICustomField> fields = fieldStoreDao.load(account.getId().toString(), Account.OBJECT_TYPE);
- account.getFields().clear();
- if (fields != null) {
- for (ICustomField field : fields) {
- account.getFields().setValue(field.getName(), field.getValue());
- }
- }
- }
-
- @Override
- public List<IAccount> get() {
- return accountDao.get();
}
- @Override
- public void test() {
- accountDao.test();
- }
-
- @Override
- public void save(final IAccount account) {
- final String accountId = account.getId().toString();
- final String objectType = Account.OBJECT_TYPE;
-
- dbi.inTransaction(new TransactionCallback<Void>() {
- @Override
- public Void inTransaction(Handle conn, TransactionStatus status) throws Exception {
- try {
- conn.begin();
-
- IAccountDao accountDao = conn.attach(IAccountDao.class);
- IAccount currentAccount = accountDao.getById(accountId);
- accountDao.save(account);
-
- IFieldStore fieldStore = account.getFields();
- IFieldStoreDao fieldStoreDao = conn.attach(IFieldStoreDao.class);
- fieldStoreDao.save(accountId, objectType, fieldStore.getFieldList());
-
- if (currentAccount == null) {
- IAccountCreationEvent creationEvent = new AccountCreationEvent(account);
- eventBus.post(creationEvent);
- } else {
- IAccountChangeEvent changeEvent = new AccountChangeEvent(account.getId(), currentAccount, account);
- if (changeEvent.hasChanges()) {
- eventBus.post(changeEvent);
- }
+ @BindingAnnotation(AccountBinder.AccountBinderFactory.class)
+ @Retention(RetentionPolicy.RUNTIME)
+ @Target({ElementType.PARAMETER})
+ public @interface AccountBinder {
+ public static class AccountBinderFactory implements BinderFactory {
+ public Binder build(Annotation annotation) {
+ return new Binder<AccountBinder, AccountDefault>() {
+ public void bind(SQLStatement q, AccountBinder bind, AccountDefault account) {
+ q.bind("id", account.getId().toString());
+ q.bind("externalKey", account.getExternalKey());
+ q.bind("email", account.getEmail());
+ q.bind("firstName", account.getFirstName());
+ q.bind("lastName", account.getLastName());
+ q.bind("phone", account.getPhone());
+ q.bind("currency", account.getCurrency().toString());
}
-
- conn.commit();
- } catch (Exception e) {
- conn.rollback();
- throw e;
- }
-
- return null;
+ };
}
- });
-//
-//
-// //accountDao.begin();
-// try {
-// accountDao.save(account);
-//
-// IFieldStore fieldStore = account.getFields();
-// fieldStoreDao.save(objectId, objectType, fieldStore.getFieldList());
-// fieldStore.processSaveEvent();
-//
-// account.processSaveEvent();
-// //accountDao.commit();
-// }
-// catch (RuntimeException ex) {
-// //accountDao.rollback();
-// throw ex;
-// }
+ }
}
}
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
new file mode 100644
index 0000000..ae7f059
--- /dev/null
+++ b/account/src/main/java/com/ning/billing/account/dao/AccountDaoWrapper.java
@@ -0,0 +1,122 @@
+/*
+ * Copyright 2010-2011 Ning, Inc.
+ *
+ * Ning licenses this file to you under the Apache License, version 2.0
+ * (the "License"); you may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.ning.billing.account.dao;
+
+import com.google.inject.Inject;
+import com.ning.billing.account.api.*;
+import com.ning.billing.account.api.user.AccountChangeEventDefault;
+import com.ning.billing.account.api.user.AccountCreationEventDefault;
+import com.ning.billing.util.eventbus.IEventBus;
+import org.skife.jdbi.v2.Handle;
+import org.skife.jdbi.v2.IDBI;
+import org.skife.jdbi.v2.TransactionCallback;
+import org.skife.jdbi.v2.TransactionStatus;
+
+import java.util.List;
+
+public class AccountDaoWrapper implements AccountDao {
+ private final AccountDao accountDao;
+ private final FieldStoreDao fieldStoreDao;
+ private final IDBI dbi; // needed for transaction support
+ private final IEventBus eventBus;
+
+ @Inject
+ public AccountDaoWrapper(IDBI dbi, IEventBus eventBus) {
+ this.dbi = dbi;
+ this.eventBus = eventBus;
+ this.accountDao = dbi.onDemand(AccountDao.class);
+ this.fieldStoreDao = dbi.onDemand(FieldStoreDao.class);
+ }
+
+ @Override
+ public Account getAccountByKey(String key) {
+ Account account = accountDao.getAccountByKey(key);
+ if (account != null) {
+ loadFields(account);
+ }
+ return account;
+ }
+
+ @Override
+ public Account getById(String id) {
+ Account account = accountDao.getById(id);
+ if (account != null) {
+ loadFields(account);
+ }
+ return account;
+ }
+
+ private void loadFields(Account account) {
+ List<CustomField> fields = fieldStoreDao.load(account.getId().toString(), AccountDefault.OBJECT_TYPE);
+ account.getFields().clear();
+ if (fields != null) {
+ for (CustomField field : fields) {
+ account.getFields().setValue(field.getName(), field.getValue());
+ }
+ }
+ }
+
+ @Override
+ public List<Account> get() {
+ return accountDao.get();
+ }
+
+ @Override
+ public void test() {
+ accountDao.test();
+ }
+
+ @Override
+ public void save(final Account account) {
+ final String accountId = account.getId().toString();
+ final String objectType = AccountDefault.OBJECT_TYPE;
+
+ dbi.inTransaction(new TransactionCallback<Void>() {
+ @Override
+ public Void inTransaction(Handle conn, TransactionStatus status) throws Exception {
+ try {
+ conn.begin();
+
+ AccountDao accountDao = conn.attach(AccountDao.class);
+ Account currentAccount = accountDao.getById(accountId);
+ accountDao.save(account);
+
+ FieldStore fieldStore = account.getFields();
+ FieldStoreDao fieldStoreDao = conn.attach(FieldStoreDao.class);
+ fieldStoreDao.save(accountId, objectType, fieldStore.getFieldList());
+
+ if (currentAccount == null) {
+ AccountCreationEvent creationEvent = new AccountCreationEventDefault(account);
+ eventBus.post(creationEvent);
+ } else {
+ AccountChangeEvent changeEvent = new AccountChangeEventDefault(account.getId(), currentAccount, account);
+ if (changeEvent.hasChanges()) {
+ eventBus.post(changeEvent);
+ }
+ }
+
+ conn.commit();
+ } catch (Exception e) {
+ conn.rollback();
+ throw e;
+ }
+
+ return null;
+ }
+ });
+ }
+}
diff --git a/account/src/main/java/com/ning/billing/account/dao/CustomFieldMapper.java b/account/src/main/java/com/ning/billing/account/dao/CustomFieldMapper.java
index 92f2c07..41bdc84 100644
--- a/account/src/main/java/com/ning/billing/account/dao/CustomFieldMapper.java
+++ b/account/src/main/java/com/ning/billing/account/dao/CustomFieldMapper.java
@@ -17,7 +17,7 @@
package com.ning.billing.account.dao;
import com.ning.billing.account.api.CustomField;
-import com.ning.billing.account.api.ICustomField;
+import com.ning.billing.account.api.StringCustomField;
import org.skife.jdbi.v2.StatementContext;
import org.skife.jdbi.v2.tweak.ResultSetMapper;
@@ -25,12 +25,12 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.UUID;
-public class CustomFieldMapper implements ResultSetMapper<ICustomField> {
+public class CustomFieldMapper implements ResultSetMapper<CustomField> {
@Override
- public ICustomField map(int index, ResultSet result, StatementContext context) throws SQLException {
+ public CustomField map(int index, ResultSet result, StatementContext context) throws SQLException {
UUID id = UUID.fromString(result.getString("id"));
String fieldName = result.getString("field_name");
String fieldValue = result.getString("field_value");
- return new CustomField(id, fieldName, fieldValue);
+ return new StringCustomField(id, fieldName, fieldValue);
}
}
diff --git a/account/src/main/java/com/ning/billing/account/dao/FieldStoreDao.java b/account/src/main/java/com/ning/billing/account/dao/FieldStoreDao.java
index d9f2cd2..079aeb7 100644
--- a/account/src/main/java/com/ning/billing/account/dao/FieldStoreDao.java
+++ b/account/src/main/java/com/ning/billing/account/dao/FieldStoreDao.java
@@ -16,32 +16,11 @@
package com.ning.billing.account.dao;
-import com.google.inject.Inject;
-import com.ning.billing.account.api.ICustomField;
-import org.skife.jdbi.v2.IDBI;
+import com.ning.billing.account.api.CustomField;
+import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper;
+import org.skife.jdbi.v2.sqlobject.stringtemplate.ExternalizedSqlViaStringTemplate3;
-import java.util.List;
-
-public class FieldStoreDao implements IFieldStoreDao {
- private final IFieldStoreDao dao;
-
- @Inject
- public FieldStoreDao(IDBI dbi) {
- dao = dbi.onDemand(IFieldStoreDao.class);
- }
-
- @Override
- public void save(String objectId, String objectType, List<ICustomField> entities) {
- dao.save(objectId, objectType, entities);
- }
-
- @Override
- public List<ICustomField> load(String objectId, String objectType) {
- return dao.load(objectId, objectType);
- }
-
- @Override
- public void test() {
- dao.test();
- }
+@ExternalizedSqlViaStringTemplate3
+@RegisterMapper(CustomFieldMapper.class)
+public interface FieldStoreDao extends EntityCollectionDao<CustomField> {
}
diff --git a/account/src/main/java/com/ning/billing/account/glue/AccountModule.java b/account/src/main/java/com/ning/billing/account/glue/AccountModule.java
index 959ef2f..dc551c2 100644
--- a/account/src/main/java/com/ning/billing/account/glue/AccountModule.java
+++ b/account/src/main/java/com/ning/billing/account/glue/AccountModule.java
@@ -17,19 +17,18 @@
package com.ning.billing.account.glue;
import com.google.inject.AbstractModule;
-import com.ning.billing.account.api.IAccountUserApi;
-import com.ning.billing.account.api.user.AccountUserApi;
+import com.ning.billing.account.api.AccountUserApi;
import com.ning.billing.account.dao.AccountDao;
+import com.ning.billing.account.dao.AccountDaoWrapper;
import com.ning.billing.account.dao.FieldStoreDao;
-import com.ning.billing.account.dao.IAccountDao;
-import com.ning.billing.account.dao.IFieldStoreDao;
+import com.ning.billing.account.dao.FieldStoreDaoWrapper;
import org.skife.config.ConfigurationObjectFactory;
public class AccountModule extends AbstractModule {
private void installConfig() {
- final IAccountConfig config = new ConfigurationObjectFactory(System.getProperties()).build(IAccountConfig.class);
- bind(IAccountConfig.class).toInstance(config);
+ final AccountConfig config = new ConfigurationObjectFactory(System.getProperties()).build(AccountConfig.class);
+ bind(AccountConfig.class).toInstance(config);
}
private void installAccountCore() {
@@ -38,19 +37,15 @@ public class AccountModule extends AbstractModule {
}
private void installAccountDao() {
- bind(IAccountDao.class).to(AccountDao.class).asEagerSingleton();
+ bind(AccountDao.class).to(AccountDaoWrapper.class).asEagerSingleton();
}
private void installAccountUserApi() {
- bind(IAccountUserApi.class).to(AccountUserApi.class).asEagerSingleton();
+ bind(AccountUserApi.class).to(com.ning.billing.account.api.user.AccountUserApi.class).asEagerSingleton();
}
private void installFieldStore() {
- bind(IFieldStoreDao.class).to(FieldStoreDao.class).asEagerSingleton();
- }
-
- protected void installInjectorMagic() {
- bind(InjectorMagic.class).asEagerSingleton();
+ bind(FieldStoreDao.class).to(FieldStoreDaoWrapper.class).asEagerSingleton();
}
@Override
@@ -60,6 +55,5 @@ public class AccountModule extends AbstractModule {
installAccountDao();
installAccountUserApi();
installFieldStore();
- installInjectorMagic();
}
}
diff --git a/account/src/test/java/com/ning/billing/account/dao/AccountDaoTestBase.java b/account/src/test/java/com/ning/billing/account/dao/AccountDaoTestBase.java
index 4399ef5..3db0cac 100644
--- a/account/src/test/java/com/ning/billing/account/dao/AccountDaoTestBase.java
+++ b/account/src/test/java/com/ning/billing/account/dao/AccountDaoTestBase.java
@@ -30,23 +30,23 @@ import java.io.IOException;
import static org.testng.Assert.fail;
public abstract class AccountDaoTestBase {
- protected IFieldStoreDao fieldStoreDao;
- protected IAccountDao accountDao;
+ protected FieldStoreDao fieldStoreDao;
+ protected AccountDao accountDao;
@BeforeClass(alwaysRun = true)
protected void setup() throws IOException {
// Healthcheck test to make sure MySQL is setup properly
try {
AccountModuleMock module = new AccountModuleMock();
- final String ddl = IOUtils.toString(IAccountDaoSql.class.getResourceAsStream("/com/ning/billing/account/ddl.sql"));
+ final String ddl = IOUtils.toString(AccountDao.class.getResourceAsStream("/com/ning/billing/account/ddl.sql"));
module.createDb(ddl);
final Injector injector = Guice.createInjector(Stage.DEVELOPMENT, module);
- fieldStoreDao = injector.getInstance(IFieldStoreDao.class);
+ fieldStoreDao = injector.getInstance(FieldStoreDao.class);
fieldStoreDao.test();
- accountDao = injector.getInstance(IAccountDao.class);
+ accountDao = injector.getInstance(AccountDao.class);
accountDao.test();
IEventBusService busService = injector.getInstance(IEventBusService.class);
diff --git a/account/src/test/java/com/ning/billing/account/dao/TestFieldStore.java b/account/src/test/java/com/ning/billing/account/dao/TestFieldStore.java
index c3ef66c..facfb69 100644
--- a/account/src/test/java/com/ning/billing/account/dao/TestFieldStore.java
+++ b/account/src/test/java/com/ning/billing/account/dao/TestFieldStore.java
@@ -17,7 +17,7 @@
package com.ning.billing.account.dao;
import com.ning.billing.account.api.FieldStore;
-import com.ning.billing.account.api.IFieldStore;
+import com.ning.billing.account.api.StringFieldStore;
import org.testng.annotations.Test;
import java.util.UUID;
@@ -31,7 +31,7 @@ public class TestFieldStore extends AccountDaoTestBase {
UUID id = UUID.randomUUID();
String objectType = "Test widget";
- IFieldStore fieldStore = new FieldStore(id, objectType);
+ FieldStore fieldStore = new StringFieldStore(id, objectType);
String fieldName = "TestField1";
String fieldValue = "Kitty Hawk";
@@ -39,7 +39,7 @@ public class TestFieldStore extends AccountDaoTestBase {
fieldStoreDao.save(id.toString(), objectType, fieldStore.getFieldList());
- fieldStore = FieldStore.create(id, objectType);
+ fieldStore = StringFieldStore.create(id, objectType);
fieldStore.add(fieldStoreDao.load(id.toString(), objectType));
assertEquals(fieldStore.getValue(fieldName), fieldValue);
@@ -49,7 +49,7 @@ public class TestFieldStore extends AccountDaoTestBase {
assertEquals(fieldStore.getValue(fieldName), fieldValue);
fieldStoreDao.save(id.toString(), objectType, fieldStore.getFieldList());
- fieldStore = FieldStore.create(id, objectType);
+ fieldStore = StringFieldStore.create(id, objectType);
assertEquals(fieldStore.getValue(fieldName), null);
fieldStore.add(fieldStoreDao.load(id.toString(), objectType));
diff --git a/account/src/test/java/com/ning/billing/account/dao/TestSimpleAccountDao.java b/account/src/test/java/com/ning/billing/account/dao/TestSimpleAccountDao.java
index 31f8a4f..ee4f813 100644
--- a/account/src/test/java/com/ning/billing/account/dao/TestSimpleAccountDao.java
+++ b/account/src/test/java/com/ning/billing/account/dao/TestSimpleAccountDao.java
@@ -17,7 +17,7 @@
package com.ning.billing.account.dao;
import com.ning.billing.account.api.Account;
-import com.ning.billing.account.api.IAccount;
+import com.ning.billing.account.api.AccountDefault;
import com.ning.billing.account.api.user.AccountBuilder;
import com.ning.billing.catalog.api.Currency;
import org.testng.annotations.Test;
@@ -33,7 +33,7 @@ public class TestSimpleAccountDao extends AccountDaoTestBase {
private final String firstName = "Wesley";
private final String email = "me@me.com";
- private Account createTestAccount() {
+ private AccountDefault createTestAccount() {
String thisKey = key + UUID.randomUUID().toString();
String lastName = UUID.randomUUID().toString();
String thisEmail = email + " " + UUID.randomUUID();
@@ -43,11 +43,11 @@ public class TestSimpleAccountDao extends AccountDaoTestBase {
public void testBasic() {
- IAccount a = createTestAccount();
+ Account a = createTestAccount();
accountDao.save(a);
String key = a.getExternalKey();
- IAccount r = accountDao.getAccountByKey(key);
+ Account r = accountDao.getAccountByKey(key);
assertNotNull(r);
assertEquals(r.getExternalKey(), a.getExternalKey());
@@ -55,14 +55,14 @@ public class TestSimpleAccountDao extends AccountDaoTestBase {
assertNotNull(r);
assertEquals(r.getExternalKey(), a.getExternalKey());
- List<IAccount> all = accountDao.get();
+ List<Account> all = accountDao.get();
assertNotNull(all);
assertTrue(all.size() >= 1);
}
@Test
public void testGetById() {
- IAccount account = createTestAccount();
+ Account account = createTestAccount();
UUID id = account.getId();
String key = account.getExternalKey();
String firstName = account.getFirstName();
@@ -81,14 +81,14 @@ public class TestSimpleAccountDao extends AccountDaoTestBase {
@Test
public void testCustomFields() {
- IAccount account = createTestAccount();
+ Account account = createTestAccount();
String fieldName = "testField1";
String fieldValue = "testField1_value";
account.setFieldValue(fieldName, fieldValue);
accountDao.save(account);
- IAccount thisAccount = accountDao.getAccountByKey(account.getExternalKey());
+ Account thisAccount = accountDao.getAccountByKey(account.getExternalKey());
assertNotNull(thisAccount);
assertEquals(thisAccount.getExternalKey(), account.getExternalKey());
assertEquals(thisAccount.getFieldValue(fieldName), fieldValue);
diff --git a/analytics/src/main/java/com/ning/billing/analytics/BusinessAccountRecorder.java b/analytics/src/main/java/com/ning/billing/analytics/BusinessAccountRecorder.java
index 7c5a6da..185289a 100644
--- a/analytics/src/main/java/com/ning/billing/analytics/BusinessAccountRecorder.java
+++ b/analytics/src/main/java/com/ning/billing/analytics/BusinessAccountRecorder.java
@@ -17,8 +17,8 @@
package com.ning.billing.analytics;
import com.google.inject.Inject;
-import com.ning.billing.account.api.IAccount;
-import com.ning.billing.account.api.IAccountUserApi;
+import com.ning.billing.account.api.Account;
+import com.ning.billing.account.api.AccountUserApi;
import com.ning.billing.analytics.dao.BusinessAccountDao;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -28,20 +28,20 @@ public class BusinessAccountRecorder
private static final Logger log = LoggerFactory.getLogger(BusinessAccountRecorder.class);
private final BusinessAccountDao dao;
- private final IAccountUserApi accountApi;
+ private final AccountUserApi accountApi;
@Inject
- public BusinessAccountRecorder(final BusinessAccountDao dao, final IAccountUserApi accountApi)
+ public BusinessAccountRecorder(final BusinessAccountDao dao, final AccountUserApi accountApi)
{
this.dao = dao;
this.accountApi = accountApi;
}
- public void subscriptionCreated(final IAccount created)
+ public void subscriptionCreated(final Account created)
{
}
- public void subscriptionUpdated(final IAccount updated)
+ public void subscriptionUpdated(final Account updated)
{
}
}
diff --git a/analytics/src/main/java/com/ning/billing/analytics/BusinessSubscriptionTransitionRecorder.java b/analytics/src/main/java/com/ning/billing/analytics/BusinessSubscriptionTransitionRecorder.java
index 5828331..5125e7e 100644
--- a/analytics/src/main/java/com/ning/billing/analytics/BusinessSubscriptionTransitionRecorder.java
+++ b/analytics/src/main/java/com/ning/billing/analytics/BusinessSubscriptionTransitionRecorder.java
@@ -17,8 +17,8 @@
package com.ning.billing.analytics;
import com.google.inject.Inject;
-import com.ning.billing.account.api.IAccount;
-import com.ning.billing.account.api.IAccountUserApi;
+import com.ning.billing.account.api.Account;
+import com.ning.billing.account.api.AccountUserApi;
import com.ning.billing.analytics.dao.BusinessSubscriptionTransitionDao;
import com.ning.billing.catalog.api.Currency;
import com.ning.billing.entitlement.api.user.IEntitlementUserApi;
@@ -36,10 +36,10 @@ public class BusinessSubscriptionTransitionRecorder
private final BusinessSubscriptionTransitionDao dao;
private final IEntitlementUserApi entitlementApi;
- private final IAccountUserApi accountApi;
+ private final AccountUserApi accountApi;
@Inject
- public BusinessSubscriptionTransitionRecorder(final BusinessSubscriptionTransitionDao dao, final IEntitlementUserApi entitlementApi, final IAccountUserApi accountApi)
+ public BusinessSubscriptionTransitionRecorder(final BusinessSubscriptionTransitionDao dao, final IEntitlementUserApi entitlementApi, final AccountUserApi accountApi)
{
this.dao = dao;
this.entitlementApi = entitlementApi;
@@ -93,7 +93,7 @@ public class BusinessSubscriptionTransitionRecorder
if (bundle != null) {
transitionKey = bundle.getKey();
- final IAccount account = accountApi.getAccountById(bundle.getAccountId());
+ final Account account = accountApi.getAccountById(bundle.getAccountId());
if (account != null) {
accountKey = account.getExternalKey();
currency = account.getCurrency();
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 1659284..7e81737 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
@@ -17,8 +17,8 @@
package com.ning.billing.analytics.api;
import com.google.inject.Inject;
-import com.ning.billing.account.api.IAccount;
-import com.ning.billing.account.api.IAccountUserApi;
+import com.ning.billing.account.api.Account;
+import com.ning.billing.account.api.AccountUserApi;
import com.ning.billing.analytics.*;
import com.ning.billing.analytics.dao.BusinessSubscriptionTransitionDao;
import com.ning.billing.catalog.api.*;
@@ -47,7 +47,7 @@ public class TestAnalyticsService
private static final String ACCOUNT_KEY = "pierre-1234";
@Inject
- private IAccountUserApi accountApi;
+ private AccountUserApi accountApi;
@Inject
private IEntitlementUserApi entitlementApi;
@@ -82,7 +82,7 @@ public class TestAnalyticsService
// We need a bundle to retrieve the event key
final MockAccount account = new MockAccount(UUID.randomUUID(), ACCOUNT_KEY, Currency.USD);
- final IAccount storedAccount = accountApi.createAccount(account);
+ final Account storedAccount = accountApi.createAccount(account);
final ISubscriptionBundle bundle = entitlementApi.createBundleForAccount(storedAccount, KEY);
// Verify we correctly initialized the account subsystem
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 1a73298..689694a 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/MockAccount.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/MockAccount.java
@@ -17,14 +17,14 @@
package com.ning.billing.analytics;
import com.ning.billing.account.api.Account;
-import com.ning.billing.account.api.IAccount;
-import com.ning.billing.account.api.IFieldStore;
+import com.ning.billing.account.api.AccountDefault;
+import com.ning.billing.account.api.FieldStore;
import com.ning.billing.catalog.api.Currency;
import sun.reflect.generics.reflectiveObjects.NotImplementedException;
import java.util.UUID;
-public class MockAccount implements IAccount
+public class MockAccount implements Account
{
private final UUID id;
private final String accountKey;
@@ -40,25 +40,25 @@ public class MockAccount implements IAccount
@Override
public String getFirstName()
{
- throw new UnsupportedOperationException();
+ return "firstName";
}
@Override
public String getLastName()
{
- throw new UnsupportedOperationException();
+ return "lastName";
}
@Override
public String getEmail()
{
- throw new UnsupportedOperationException();
+ return "test@test.com";
}
@Override
public String getPhone()
{
- throw new UnsupportedOperationException();
+ return "408-555-6665";
}
@Override
@@ -70,7 +70,7 @@ public class MockAccount implements IAccount
@Override
public int getBillCycleDay()
{
- throw new UnsupportedOperationException();
+ return 12;
}
@Override
@@ -101,12 +101,12 @@ public class MockAccount implements IAccount
}
@Override
- public IFieldStore getFields() {
+ public FieldStore getFields() {
throw new NotImplementedException();
}
@Override
public String getObjectName() {
- return Account.OBJECT_TYPE;
+ return AccountDefault.OBJECT_TYPE;
}
}
diff --git a/analytics/src/test/java/com/ning/billing/analytics/MockIAccountUserApi.java b/analytics/src/test/java/com/ning/billing/analytics/MockIAccountUserApi.java
index 336508b..d11f4e9 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/MockIAccountUserApi.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/MockIAccountUserApi.java
@@ -16,16 +16,16 @@
package com.ning.billing.analytics;
-import com.ning.billing.account.api.IAccount;
-import com.ning.billing.account.api.IAccountData;
-import com.ning.billing.account.api.IAccountUserApi;
+import com.ning.billing.account.api.Account;
+import com.ning.billing.account.api.AccountData;
+import com.ning.billing.account.api.AccountUserApi;
import com.ning.billing.catalog.api.Currency;
import sun.reflect.generics.reflectiveObjects.NotImplementedException;
import java.util.List;
import java.util.UUID;
-public class MockIAccountUserApi implements IAccountUserApi
+public class MockIAccountUserApi implements AccountUserApi
{
private final MockAccount account;
@@ -35,30 +35,30 @@ public class MockIAccountUserApi implements IAccountUserApi
}
@Override
- public IAccount createAccount(final IAccountData data)
+ public Account createAccount(final AccountData data)
{
throw new UnsupportedOperationException();
}
@Override
- public void saveAccount(IAccount account) {
+ public void saveAccount(Account account) {
throw new NotImplementedException();
}
@Override
- public IAccount getAccountByKey(final String key)
+ public Account getAccountByKey(final String key)
{
throw new UnsupportedOperationException();
}
@Override
- public IAccount getAccountById(final UUID uid)
+ public Account getAccountById(final UUID uid)
{
return account;
}
@Override
- public List<IAccount> getAccounts()
+ public List<Account> getAccounts()
{
throw new UnsupportedOperationException();
}
diff --git a/analytics/src/test/java/com/ning/billing/analytics/MockIEntitlementUserApi.java b/analytics/src/test/java/com/ning/billing/analytics/MockIEntitlementUserApi.java
index 1aabb67..3565296 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/MockIEntitlementUserApi.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/MockIEntitlementUserApi.java
@@ -16,7 +16,7 @@
package com.ning.billing.analytics;
-import com.ning.billing.account.api.IAccount;
+import com.ning.billing.account.api.Account;
import com.ning.billing.catalog.api.BillingPeriod;
import com.ning.billing.entitlement.api.user.EntitlementUserApiException;
import com.ning.billing.entitlement.api.user.IEntitlementUserApi;
@@ -105,7 +105,7 @@ public class MockIEntitlementUserApi implements IEntitlementUserApi
}
@Override
- public ISubscriptionBundle createBundleForAccount(final IAccount account, final String bundleKey) throws EntitlementUserApiException
+ public ISubscriptionBundle createBundleForAccount(final Account account, final String bundleKey) throws EntitlementUserApiException
{
throw new UnsupportedOperationException();
}
diff --git a/api/src/main/java/com/ning/billing/entitlement/api/billing/IEntitlementBillingApi.java b/api/src/main/java/com/ning/billing/entitlement/api/billing/IEntitlementBillingApi.java
index 0a9848e..c364966 100644
--- a/api/src/main/java/com/ning/billing/entitlement/api/billing/IEntitlementBillingApi.java
+++ b/api/src/main/java/com/ning/billing/entitlement/api/billing/IEntitlementBillingApi.java
@@ -16,21 +16,20 @@
package com.ning.billing.entitlement.api.billing;
+import com.ning.billing.account.api.Account;
+import org.joda.time.DateTime;
+
import java.util.List;
import java.util.SortedSet;
import java.util.UUID;
-import org.joda.time.DateTime;
-
-import com.ning.billing.account.api.IAccount;
-
public interface IEntitlementBillingApi {
/**
*
* @return the list of accounts which have active subscriptions
*/
- public List<IAccount> getActiveAccounts();
+ public List<Account> getActiveAccounts();
/**
*
diff --git a/api/src/main/java/com/ning/billing/entitlement/api/user/IEntitlementUserApi.java b/api/src/main/java/com/ning/billing/entitlement/api/user/IEntitlementUserApi.java
index f53e8bb..be570f7 100644
--- a/api/src/main/java/com/ning/billing/entitlement/api/user/IEntitlementUserApi.java
+++ b/api/src/main/java/com/ning/billing/entitlement/api/user/IEntitlementUserApi.java
@@ -16,7 +16,7 @@
package com.ning.billing.entitlement.api.user;
-import com.ning.billing.account.api.IAccount;
+import com.ning.billing.account.api.Account;
import com.ning.billing.catalog.api.BillingPeriod;
import org.joda.time.DateTime;
@@ -36,7 +36,7 @@ public interface IEntitlementUserApi {
public List<ISubscription> getSubscriptionsForKey(String bundleKey);
- public ISubscriptionBundle createBundleForAccount(IAccount account, String bundleKey)
+ public ISubscriptionBundle createBundleForAccount(Account account, String bundleKey)
throws EntitlementUserApiException;
public ISubscription createSubscription(UUID bundleId, String productName, BillingPeriod term, String planSet, DateTime requestedDate)
diff --git a/api/src/main/java/com/ning/billing/invoice/api/IInvoicePaymentApi.java b/api/src/main/java/com/ning/billing/invoice/api/IInvoicePaymentApi.java
index 6528a79..eef5963 100644
--- a/api/src/main/java/com/ning/billing/invoice/api/IInvoicePaymentApi.java
+++ b/api/src/main/java/com/ning/billing/invoice/api/IInvoicePaymentApi.java
@@ -25,7 +25,7 @@ import java.util.UUID;
public interface IInvoicePaymentApi {
public void paymentSuccessful(UUID invoiceId, BigDecimal amount, Currency currency, UUID paymentId);
- public List<IInvoice> getInvoicesByAccount(UUID accountId);
+ public List<Invoice> getInvoicesByAccount(UUID accountId);
- public IInvoice getInvoice(UUID invoiceId);
+ public Invoice getInvoice(UUID invoiceId);
}
diff --git a/api/src/main/java/com/ning/billing/invoice/api/IInvoiceUserApi.java b/api/src/main/java/com/ning/billing/invoice/api/IInvoiceUserApi.java
index 3f9b8f4..68e658b 100644
--- a/api/src/main/java/com/ning/billing/invoice/api/IInvoiceUserApi.java
+++ b/api/src/main/java/com/ning/billing/invoice/api/IInvoiceUserApi.java
@@ -25,9 +25,9 @@ import java.util.UUID;
public interface IInvoiceUserApi {
public List<UUID> getInvoicesForPayment(DateTime targetDate, int numberOfDays);
- public List<IInvoice> getInvoicesByAccount();
+ public List<Invoice> getInvoicesByAccount();
- public IInvoice getInvoice(UUID invoiceId);
+ public Invoice getInvoice(UUID invoiceId);
public void paymentAttemptFailed(UUID invoiceId, DateTime paymentAttemptDate);
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/billing/EntitlementBillingApi.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/billing/EntitlementBillingApi.java
index 4fb32a4..8ee19ff 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/billing/EntitlementBillingApi.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/billing/EntitlementBillingApi.java
@@ -17,7 +17,7 @@
package com.ning.billing.entitlement.api.billing;
import com.google.inject.Inject;
-import com.ning.billing.account.api.IAccount;
+import com.ning.billing.account.api.Account;
import com.ning.billing.entitlement.api.user.Subscription;
import com.ning.billing.entitlement.api.user.SubscriptionBuilder;
import com.ning.billing.entitlement.engine.dao.IEntitlementDao;
@@ -41,7 +41,7 @@ public class EntitlementBillingApi implements IEntitlementBillingApi {
}
@Override
- public List<IAccount> getActiveAccounts() {
+ public List<Account> getActiveAccounts() {
return null;
}
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/EntitlementUserApi.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/EntitlementUserApi.java
index e867a82..7f6dcfc 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/EntitlementUserApi.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/EntitlementUserApi.java
@@ -18,7 +18,7 @@ package com.ning.billing.entitlement.api.user;
import com.google.inject.Inject;
import com.ning.billing.ErrorCode;
-import com.ning.billing.account.api.IAccount;
+import com.ning.billing.account.api.Account;
import com.ning.billing.catalog.api.*;
import com.ning.billing.entitlement.alignment.IPlanAligner;
import com.ning.billing.entitlement.alignment.IPlanAligner.TimedPhase;
@@ -81,7 +81,7 @@ public class EntitlementUserApi implements IEntitlementUserApi {
}
@Override
- public ISubscriptionBundle createBundleForAccount(IAccount account, String bundleName)
+ public ISubscriptionBundle createBundleForAccount(Account account, String bundleName)
throws EntitlementUserApiException {
SubscriptionBundle bundle = new SubscriptionBundle(bundleName, account.getId());
return dao.createSubscriptionBundle(bundle);
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 2104699..fa68bff 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
@@ -17,8 +17,8 @@
package com.ning.billing.entitlement.api.user;
import com.google.inject.Injector;
-import com.ning.billing.account.api.IAccount;
-import com.ning.billing.account.api.IFieldStore;
+import com.ning.billing.account.api.Account;
+import com.ning.billing.account.api.FieldStore;
import com.ning.billing.catalog.CatalogService;
import com.ning.billing.catalog.api.*;
import com.ning.billing.config.IEntitlementConfig;
@@ -73,7 +73,7 @@ public abstract class TestUserApiBase {
protected ClockMock clock;
protected IEventBusService busService;
- protected IAccount account;
+ protected Account account;
protected ICatalog catalog;
protected ApiTestListener testListener;
protected ISubscriptionBundle bundle;
@@ -278,8 +278,8 @@ public abstract class TestUserApiBase {
return result;
}
- protected IAccount getAccount() {
- IAccount account = new IAccount() {
+ protected Account getAccount() {
+ Account account = new Account() {
@Override
public String getFirstName() {
return "accountFirstName";
@@ -329,7 +329,7 @@ public abstract class TestUserApiBase {
}
@Override
- public IFieldStore getFields() {
+ public FieldStore getFields() {
throw new NotImplementedException();
}
diff --git a/invoice/src/main/java/com/ning/billing/invoice/api/InvoiceUserApi.java b/invoice/src/main/java/com/ning/billing/invoice/api/InvoiceUserApi.java
index 8a4fc22..4d6e190 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/api/InvoiceUserApi.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/api/InvoiceUserApi.java
@@ -17,7 +17,7 @@
package com.ning.billing.invoice.api;
import com.google.inject.Inject;
-import com.ning.billing.invoice.dao.IInvoiceDao;
+import com.ning.billing.invoice.dao.InvoiceDao;
import org.joda.time.DateTime;
import org.skife.jdbi.v2.IDBI;
@@ -26,11 +26,11 @@ import java.util.List;
import java.util.UUID;
public class InvoiceUserApi implements IInvoiceUserApi {
- private final IInvoiceDao dao;
+ private final InvoiceDao dao;
@Inject
public InvoiceUserApi(IDBI dbi) {
- dao = dbi.onDemand(IInvoiceDao.class);
+ dao = dbi.onDemand(InvoiceDao.class);
}
@Override
@@ -39,12 +39,12 @@ public class InvoiceUserApi implements IInvoiceUserApi {
}
@Override
- public List<IInvoice> getInvoicesByAccount() {
+ public List<Invoice> getInvoicesByAccount() {
return null; //To change body of implemented methods use File | Settings | File Templates.
}
@Override
- public IInvoice getInvoice(UUID invoiceId) {
+ public Invoice getInvoice(UUID invoiceId) {
return null; //To change body of implemented methods use File | Settings | File Templates.
}
diff --git a/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceDao.java b/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceDao.java
index 25ace96..efbb495 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceDao.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceDao.java
@@ -16,60 +16,95 @@
package com.ning.billing.invoice.dao;
-import com.google.inject.Inject;
-import com.ning.billing.invoice.api.IInvoice;
-import org.skife.jdbi.v2.IDBI;
+import com.ning.billing.catalog.api.Currency;
+import com.ning.billing.invoice.api.IInvoiceItem;
+import com.ning.billing.invoice.api.Invoice;
+import com.ning.billing.invoice.model.InvoiceDefault;
+import org.joda.time.DateTime;
+import org.skife.jdbi.v2.SQLStatement;
+import org.skife.jdbi.v2.StatementContext;
+import org.skife.jdbi.v2.sqlobject.*;
+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.math.BigDecimal;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Timestamp;
+import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;
-public class InvoiceDao implements IInvoiceDao {
- private final IInvoiceDao dao;
+@ExternalizedSqlViaStringTemplate3()
+@RegisterMapper({UuidMapper.class, InvoiceDao.InvoiceMapper.class})
+public interface InvoiceDao {
+ @SqlQuery
+ List<Invoice> getInvoicesByAccount(@Bind("accountId") final String accountId);
- @Inject
- public InvoiceDao(IDBI dbi) {
- this.dao = dbi.onDemand(IInvoiceDao.class);
- }
+ @SqlQuery
+ Invoice getInvoice(@Bind("id") final String invoiceId);
- @Override
- public List<IInvoice> getInvoicesByAccount(final String accountId) {
- return dao.getInvoicesByAccount(accountId);
- }
+ @SqlUpdate
+ void createInvoice(@InvoiceBinder final Invoice invoice);
- @Override
- public IInvoice getInvoice(final String invoiceId) {
- return dao.getInvoice(invoiceId);
- }
+ @SqlQuery
+ List<Invoice> getInvoicesBySubscription(@Bind("subscriptionId") final String subscriptionId);
- @Override
- public void createInvoice(final IInvoice invoice) {
- dao.createInvoice(invoice);
- }
+ @SqlQuery
+ List<UUID> getInvoicesForPayment(@Bind("targetDate") final Date targetDate,
+ @Bind("numberOfDays") final int numberOfDays);
- @Override
- public List<IInvoice> getInvoicesBySubscription(String subscriptionId) {
- return dao.getInvoicesBySubscription(subscriptionId);
- }
+ @SqlUpdate
+ void notifySuccessfulPayment(@Bind("id") final String invoiceId,
+ @Bind("paymentDate") final Date paymentDate,
+ @Bind("paymentAmount") final BigDecimal paymentAmount);
- @Override
- public List<UUID> getInvoicesForPayment(Date targetDate, int numberOfDays) {
- return dao.getInvoicesForPayment(targetDate, numberOfDays);
- }
+ @SqlUpdate
+ void notifyFailedPayment(@Bind("id") final String invoiceId,
+ @Bind("paymentAttemptDate") final Date paymentAttemptDate);
- @Override
- public void notifySuccessfulPayment(String invoiceId, Date paymentDate, BigDecimal paymentAmount) {
- dao.notifySuccessfulPayment(invoiceId, paymentDate, paymentAmount);
- }
+ @SqlUpdate
+ void test();
- @Override
- public void notifyFailedPayment(String invoiceId, Date paymentAttemptDate) {
- dao.notifyFailedPayment(invoiceId, paymentAttemptDate);
+ @BindingAnnotation(InvoiceBinder.InvoiceBinderFactory.class)
+ @Retention(RetentionPolicy.RUNTIME)
+ @Target({ElementType.PARAMETER})
+ public @interface InvoiceBinder {
+ public static class InvoiceBinderFactory implements BinderFactory {
+ public Binder build(Annotation annotation) {
+ return new Binder<InvoiceBinder, Invoice>() {
+ public void bind(SQLStatement q, InvoiceBinder bind, Invoice invoice) {
+ q.bind("id", invoice.getId().toString());
+ q.bind("accountId", invoice.getAccountId().toString());
+ q.bind("invoiceDate", invoice.getInvoiceDate().toDate());
+ q.bind("targetDate", invoice.getTargetDate().toDate());
+ q.bind("amountPaid", invoice.getAmountPaid());
+ q.bind("amountOutstanding", invoice.getAmountOutstanding());
+ DateTime invoiceDate = invoice.getLastPaymentAttempt();
+ q.bind("lastPaymentAttempt", invoiceDate == null ? null : invoiceDate.toDate());
+ q.bind("currency", invoice.getCurrency().toString());
+ }
+ };
+ }
+ }
}
- @Override
- public void test() {
- dao.test();
+ public static class InvoiceMapper implements ResultSetMapper<Invoice> {
+ @Override
+ public Invoice map(int index, ResultSet result, StatementContext context) throws SQLException {
+ UUID id = UUID.fromString(result.getString("id"));
+ UUID accountId = UUID.fromString(result.getString("account_id"));
+ DateTime invoiceDate = new DateTime(result.getTimestamp("invoice_date"));
+ DateTime targetDate = new DateTime(result.getTimestamp("target_date"));
+ BigDecimal amountPaid = result.getBigDecimal("amount_paid");
+ Timestamp lastPaymentAttemptTimeStamp = result.getTimestamp("last_payment_attempt");
+ DateTime lastPaymentAttempt = lastPaymentAttemptTimeStamp == null ? null : new DateTime(lastPaymentAttemptTimeStamp);
+ Currency currency = Currency.valueOf(result.getString("currency"));
+
+ return new InvoiceDefault(id, accountId, invoiceDate, targetDate, currency, lastPaymentAttempt, amountPaid, new ArrayList<IInvoiceItem>());
+ }
}
}
diff --git a/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceDaoWrapper.java b/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceDaoWrapper.java
new file mode 100644
index 0000000..99a4a35
--- /dev/null
+++ b/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceDaoWrapper.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2010-2011 Ning, Inc.
+ *
+ * Ning licenses this file to you under the Apache License, version 2.0
+ * (the "License"); you may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.ning.billing.invoice.dao;
+
+import com.google.inject.Inject;
+import com.ning.billing.invoice.api.Invoice;
+import org.skife.jdbi.v2.IDBI;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+import java.util.UUID;
+
+public class InvoiceDaoWrapper implements InvoiceDao {
+ private final InvoiceDao dao;
+
+ @Inject
+ public InvoiceDaoWrapper(IDBI dbi) {
+ this.dao = dbi.onDemand(InvoiceDao.class);
+ }
+
+ @Override
+ public List<Invoice> getInvoicesByAccount(final String accountId) {
+ return dao.getInvoicesByAccount(accountId);
+ }
+
+ @Override
+ public Invoice getInvoice(final String invoiceId) {
+ return dao.getInvoice(invoiceId);
+ }
+
+ @Override
+ public void createInvoice(final Invoice invoice) {
+ dao.createInvoice(invoice);
+ }
+
+ @Override
+ public List<Invoice> getInvoicesBySubscription(String subscriptionId) {
+ return dao.getInvoicesBySubscription(subscriptionId);
+ }
+
+ @Override
+ public List<UUID> getInvoicesForPayment(Date targetDate, int numberOfDays) {
+ return dao.getInvoicesForPayment(targetDate, numberOfDays);
+ }
+
+ @Override
+ public void notifySuccessfulPayment(String invoiceId, Date paymentDate, BigDecimal paymentAmount) {
+ dao.notifySuccessfulPayment(invoiceId, paymentDate, paymentAmount);
+ }
+
+ @Override
+ public void notifyFailedPayment(String invoiceId, Date paymentAttemptDate) {
+ dao.notifyFailedPayment(invoiceId, paymentAttemptDate);
+ }
+
+ @Override
+ public void test() {
+ dao.test();
+ }
+}
diff --git a/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceItemDao.java b/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceItemDao.java
index d4dbc29..61e0865 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceItemDao.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceItemDao.java
@@ -16,47 +16,82 @@
package com.ning.billing.invoice.dao;
-import com.google.inject.Inject;
+import com.ning.billing.catalog.api.Currency;
import com.ning.billing.invoice.api.IInvoiceItem;
-import org.skife.jdbi.v2.IDBI;
+import com.ning.billing.invoice.model.InvoiceItem;
+import org.joda.time.DateTime;
+import org.skife.jdbi.v2.SQLStatement;
+import org.skife.jdbi.v2.StatementContext;
+import org.skife.jdbi.v2.sqlobject.*;
+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.math.BigDecimal;
+import java.sql.ResultSet;
+import java.sql.SQLException;
import java.util.List;
+import java.util.UUID;
-public class InvoiceItemDao implements IInvoiceItemDao {
- private final IInvoiceItemDao dao;
+@ExternalizedSqlViaStringTemplate3()
+@RegisterMapper(InvoiceItemDao.InvoiceItemMapper.class)
+public interface InvoiceItemDao {
+ @SqlQuery
+ IInvoiceItem getInvoiceItem(@Bind("id") final String invoiceItemId);
- @Inject
- public InvoiceItemDao(IDBI dbi) {
- dao = dbi.onDemand(IInvoiceItemDao.class);
- }
+ @SqlQuery
+ List<IInvoiceItem> getInvoiceItemsByInvoice(@Bind("invoiceId") final String invoiceId);
- @Override
- public IInvoiceItem getInvoiceItem(String invoiceItemId) {
- return dao.getInvoiceItem(invoiceItemId);
- }
+ @SqlQuery
+ List<IInvoiceItem> getInvoiceItemsByAccount(@Bind("accountId") final String accountId);
- @Override
- public List<IInvoiceItem> getInvoiceItemsByInvoice(String invoiceId) {
- return dao.getInvoiceItemsByInvoice(invoiceId);
- }
+ @SqlQuery
+ List<IInvoiceItem> getInvoiceItemsBySubscription(@Bind("subscriptionId") final String subscriptionId);
- @Override
- public List<IInvoiceItem> getInvoiceItemsByAccount(String accountId) {
- return dao.getInvoiceItemsByAccount(accountId);
- }
+ @SqlUpdate
+ void createInvoiceItem(@InvoiceItemBinder final IInvoiceItem invoiceItem);
- @Override
- public List<IInvoiceItem> getInvoiceItemsBySubscription(String subscriptionId) {
- return dao.getInvoiceItemsBySubscription(subscriptionId);
- }
+ @SqlUpdate
+ void test();
- @Override
- public void createInvoiceItem(IInvoiceItem invoiceItem) {
- dao.createInvoiceItem(invoiceItem);
+ @BindingAnnotation(InvoiceItemBinder.InvoiceItemBinderFactory.class)
+ @Retention(RetentionPolicy.RUNTIME)
+ @Target({ElementType.PARAMETER})
+ public @interface InvoiceItemBinder {
+ public static class InvoiceItemBinderFactory implements BinderFactory {
+ public Binder build(Annotation annotation) {
+ return new Binder<InvoiceItemBinder, IInvoiceItem>() {
+ public void bind(SQLStatement q, InvoiceItemBinder bind, IInvoiceItem item) {
+ q.bind("id", item.getId().toString());
+ q.bind("invoiceId", item.getInvoiceId().toString());
+ q.bind("subscriptionId", item.getSubscriptionId().toString());
+ q.bind("startDate", item.getStartDate().toDate());
+ q.bind("endDate", item.getEndDate().toDate());
+ q.bind("description", item.getDescription());
+ q.bind("amount", item.getAmount());
+ q.bind("rate", item.getRate());
+ q.bind("currency", item.getCurrency().toString());
+ }
+ };
+ }
+ }
}
- @Override
- public void test() {
- dao.test();
+ public static class InvoiceItemMapper implements ResultSetMapper<IInvoiceItem> {
+ @Override
+ public IInvoiceItem map(int index, ResultSet result, StatementContext context) throws SQLException {
+ UUID id = UUID.fromString(result.getString("id"));
+ UUID invoiceId = UUID.fromString(result.getString("invoice_id"));
+ UUID subscriptionId = UUID.fromString(result.getString("subscription_id"));
+ DateTime startDate = new DateTime(result.getTimestamp("start_date"));
+ DateTime endDate = new DateTime(result.getTimestamp("end_date"));
+ String description = result.getString("description");
+ BigDecimal amount = result.getBigDecimal("amount");
+ BigDecimal rate = result.getBigDecimal("rate");
+ Currency currency = Currency.valueOf(result.getString("currency"));
+
+ return new InvoiceItem(id, invoiceId, subscriptionId, startDate, endDate, description, amount, rate , currency);
+ }
}
}
diff --git a/invoice/src/main/java/com/ning/billing/invoice/glue/InvoiceModule.java b/invoice/src/main/java/com/ning/billing/invoice/glue/InvoiceModule.java
index bd1932f..ee82e5c 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/glue/InvoiceModule.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/glue/InvoiceModule.java
@@ -19,18 +19,18 @@ package com.ning.billing.invoice.glue;
import com.google.inject.AbstractModule;
import com.ning.billing.invoice.api.IInvoiceUserApi;
import com.ning.billing.invoice.api.InvoiceUserApi;
-import com.ning.billing.invoice.dao.IInvoiceDao;
-import com.ning.billing.invoice.dao.IInvoiceItemDao;
import com.ning.billing.invoice.dao.InvoiceDao;
+import com.ning.billing.invoice.dao.InvoiceDaoWrapper;
import com.ning.billing.invoice.dao.InvoiceItemDao;
+import com.ning.billing.invoice.dao.InvoiceItemDaoWrapper;
public class InvoiceModule extends AbstractModule {
private void installInvoiceDao() {
- bind(IInvoiceDao.class).to(InvoiceDao.class).asEagerSingleton();
+ bind(InvoiceDao.class).to(InvoiceDaoWrapper.class).asEagerSingleton();
}
private void installInvoiceItemDao() {
- bind(IInvoiceItemDao.class).to(InvoiceItemDao.class).asEagerSingleton();
+ bind(InvoiceItemDao.class).to(InvoiceItemDaoWrapper.class).asEagerSingleton();
}
protected void installInvoiceUserApi() {
diff --git a/invoice/src/main/java/com/ning/billing/invoice/model/BillingModeBase.java b/invoice/src/main/java/com/ning/billing/invoice/model/BillingModeBase.java
index d141f27..949f711 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/model/BillingModeBase.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/model/BillingModeBase.java
@@ -21,7 +21,7 @@ import org.joda.time.DateTime;
import java.math.BigDecimal;
-public abstract class BillingModeBase implements IBillingMode {
+public abstract class BillingModeBase implements BillingMode {
@Override
public BigDecimal calculateNumberOfBillingCycles(final DateTime startDate, final DateTime endDate, final DateTime targetDate, final int billingCycleDay, final BillingPeriod billingPeriod) throws InvalidDateSequenceException {
if (endDate.isBefore(startDate)) {throw new InvalidDateSequenceException();}
diff --git a/invoice/src/main/java/com/ning/billing/invoice/model/DefaultInvoiceGenerator.java b/invoice/src/main/java/com/ning/billing/invoice/model/DefaultInvoiceGenerator.java
index 9526b62..360f85d 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/model/DefaultInvoiceGenerator.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/model/DefaultInvoiceGenerator.java
@@ -18,11 +18,10 @@ package com.ning.billing.invoice.model;
import com.ning.billing.catalog.api.BillingPeriod;
import com.ning.billing.catalog.api.Currency;
-import com.ning.billing.entitlement.api.billing.BillingMode;
import com.ning.billing.entitlement.api.billing.IBillingEvent;
import com.ning.billing.invoice.api.BillingEventSet;
-import com.ning.billing.invoice.api.IInvoice;
import com.ning.billing.invoice.api.IInvoiceItem;
+import com.ning.billing.invoice.api.Invoice;
import org.joda.time.DateTime;
import java.math.BigDecimal;
@@ -31,13 +30,13 @@ import java.util.Collections;
import java.util.List;
import java.util.UUID;
-public class DefaultInvoiceGenerator implements IInvoiceGenerator {
+public class DefaultInvoiceGenerator implements InvoiceGenerator {
@Override
- public IInvoice generateInvoice(final UUID accountId, final BillingEventSet events, final InvoiceItemList existingItems, final DateTime targetDate, final Currency targetCurrency) {
- if (events == null) {return new Invoice(accountId, targetDate, targetCurrency);}
- if (events.size() == 0) {return new Invoice(accountId, targetDate, targetCurrency);}
+ public Invoice generateInvoice(final UUID accountId, final BillingEventSet events, final InvoiceItemList existingItems, final DateTime targetDate, final Currency targetCurrency) {
+ if (events == null) {return new InvoiceDefault(accountId, targetDate, targetCurrency);}
+ if (events.size() == 0) {return new InvoiceDefault(accountId, targetDate, targetCurrency);}
- Invoice invoice = new Invoice(accountId, targetDate, targetCurrency);
+ InvoiceDefault invoice = new InvoiceDefault(accountId, targetDate, targetCurrency);
InvoiceItemList currentItems = generateInvoiceItems(events, invoice.getId(), targetDate, targetCurrency);
InvoiceItemList itemsToPost = reconcileInvoiceItems(invoice.getId(), currentItems, existingItems);
invoice.add(itemsToPost);
@@ -114,7 +113,7 @@ public class DefaultInvoiceGenerator implements IInvoiceGenerator {
private void processEvent(UUID invoiceId, IBillingEvent event, List<IInvoiceItem> items, DateTime targetDate, Currency targetCurrency) {
BigDecimal rate = event.getPrice(targetCurrency);
BigDecimal invoiceItemAmount = calculateInvoiceItemAmount(event, targetDate, rate);
- IBillingMode billingMode = getBillingMode(event.getBillingMode());
+ BillingMode billingMode = getBillingMode(event.getBillingMode());
DateTime billThroughDate = billingMode.calculateEffectiveEndDate(event.getEffectiveDate(), targetDate, event.getBillCycleDay(), event.getBillingPeriod());
addInvoiceItem(invoiceId, items, event, billThroughDate, invoiceItemAmount, rate, targetCurrency);
@@ -123,7 +122,7 @@ public class DefaultInvoiceGenerator implements IInvoiceGenerator {
private void processEvents(UUID invoiceId, IBillingEvent firstEvent, IBillingEvent secondEvent, List<IInvoiceItem> items, DateTime targetDate, Currency targetCurrency) {
BigDecimal rate = firstEvent.getPrice(targetCurrency);
BigDecimal invoiceItemAmount = calculateInvoiceItemAmount(firstEvent, secondEvent, targetDate, rate);
- IBillingMode billingMode = getBillingMode(firstEvent.getBillingMode());
+ BillingMode billingMode = getBillingMode(firstEvent.getBillingMode());
DateTime billThroughDate = billingMode.calculateEffectiveEndDate(firstEvent.getEffectiveDate(), secondEvent.getEffectiveDate(), targetDate, firstEvent.getBillCycleDay(), firstEvent.getBillingPeriod());
addInvoiceItem(invoiceId, items, firstEvent, billThroughDate, invoiceItemAmount, rate, targetCurrency);
@@ -137,7 +136,7 @@ public class DefaultInvoiceGenerator implements IInvoiceGenerator {
}
private BigDecimal calculateInvoiceItemAmount(IBillingEvent event, DateTime targetDate, BigDecimal rate){
- IBillingMode billingMode = getBillingMode(event.getBillingMode());
+ BillingMode billingMode = getBillingMode(event.getBillingMode());
DateTime startDate = event.getEffectiveDate();
int billingCycleDay = event.getBillCycleDay();
BillingPeriod billingPeriod = event.getBillingPeriod();
@@ -153,7 +152,7 @@ public class DefaultInvoiceGenerator implements IInvoiceGenerator {
}
private BigDecimal calculateInvoiceItemAmount(IBillingEvent firstEvent, IBillingEvent secondEvent, DateTime targetDate, BigDecimal rate) {
- IBillingMode billingMode = getBillingMode(firstEvent.getBillingMode());
+ BillingMode billingMode = getBillingMode(firstEvent.getBillingMode());
DateTime startDate = firstEvent.getEffectiveDate();
int billingCycleDay = firstEvent.getBillCycleDay();
BillingPeriod billingPeriod = firstEvent.getBillingPeriod();
@@ -170,7 +169,7 @@ public class DefaultInvoiceGenerator implements IInvoiceGenerator {
}
}
- private IBillingMode getBillingMode(BillingMode billingMode) {
+ private BillingMode getBillingMode(com.ning.billing.entitlement.api.billing.BillingMode billingMode) {
switch (billingMode) {
case IN_ADVANCE:
return new InAdvanceBillingMode();
diff --git a/invoice/src/main/java/com/ning/billing/invoice/model/TestConsole.java b/invoice/src/main/java/com/ning/billing/invoice/model/TestConsole.java
index b637323..8c3baf1 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/model/TestConsole.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/model/TestConsole.java
@@ -82,7 +82,7 @@ public class TestConsole {
}
private static void testScenario(DateTime startDate, DateTime targetDate, int billingCycleDay, BillingPeriod billingPeriod, BigDecimal expectedValue) {
- IBillingMode billingMode = new InAdvanceBillingMode();
+ BillingMode billingMode = new InAdvanceBillingMode();
System.out.println("Start date: " + startDate.toLocalDate());
System.out.println("Target date: " + targetDate.toLocalDate());
@@ -111,7 +111,7 @@ public class TestConsole {
}
private static void testScenario(DateTime startDate, DateTime endDate, DateTime targetDate, int billingCycleDay, BillingPeriod billingPeriod, BigDecimal expectedValue) {
- IBillingMode billingMode = new InAdvanceBillingMode();
+ BillingMode billingMode = new InAdvanceBillingMode();
System.out.println("Start date: " + startDate.toLocalDate());
System.out.println("End date: " + endDate.toLocalDate());
diff --git a/invoice/src/test/java/com/ning/billing/invoice/dao/InvoiceDaoTests.java b/invoice/src/test/java/com/ning/billing/invoice/dao/InvoiceDaoTests.java
index 906300f..be96d86 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/dao/InvoiceDaoTests.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/dao/InvoiceDaoTests.java
@@ -21,10 +21,9 @@ import com.google.inject.Injector;
import com.google.inject.Stage;
import com.ning.billing.catalog.api.Currency;
import com.ning.billing.dbi.MysqlTestingHelper;
-import com.ning.billing.invoice.api.IInvoice;
-import com.ning.billing.invoice.glue.InjectorMagic;
+import com.ning.billing.invoice.api.Invoice;
import com.ning.billing.invoice.glue.InvoiceModuleMock;
-import com.ning.billing.invoice.model.Invoice;
+import com.ning.billing.invoice.model.InvoiceDefault;
import com.ning.billing.invoice.model.InvoiceItem;
import com.ning.billing.util.clock.Clock;
import org.apache.commons.io.IOUtils;
@@ -44,24 +43,23 @@ public class InvoiceDaoTests {
private final int NUMBER_OF_DAY_BETWEEN_RETRIES = 8;
private final MysqlTestingHelper helper = new MysqlTestingHelper();
- private IInvoiceDao dao;
- private IInvoiceItemDao invoiceItemDao;
+ private InvoiceDao dao;
+ private InvoiceItemDao invoiceItemDao;
@BeforeClass()
private void setup() throws IOException {
// Health check test to make sure MySQL is setup properly
try {
InvoiceModuleMock module = new InvoiceModuleMock();
- final String ddl = IOUtils.toString(InvoiceDao.class.getResourceAsStream("/com/ning/billing/invoice/ddl.sql"));
+ final String ddl = IOUtils.toString(InvoiceDaoWrapper.class.getResourceAsStream("/com/ning/billing/invoice/ddl.sql"));
module.createDb(ddl);
final Injector injector = Guice.createInjector(Stage.DEVELOPMENT, module);
- InjectorMagic injectorMagic = injector.getInstance(InjectorMagic.class);
- dao = injector.getInstance(InvoiceDao.class);
+ dao = injector.getInstance(InvoiceDaoWrapper.class);
dao.test();
- invoiceItemDao = injector.getInstance(IInvoiceItemDao.class);
+ invoiceItemDao = injector.getInstance(InvoiceItemDao.class);
invoiceItemDao.test();
}
catch (Throwable t) {
@@ -71,17 +69,16 @@ public class InvoiceDaoTests {
@Test
public void testCreationAndRetrievalByAccount() {
- InvoiceDao dao = InjectorMagic.getInvoiceDao();
UUID accountId = UUID.randomUUID();
- IInvoice invoice = new Invoice(accountId, new Clock().getUTCNow(), Currency.USD);
+ Invoice invoice = new InvoiceDefault(accountId, new Clock().getUTCNow(), Currency.USD);
DateTime invoiceDate = invoice.getInvoiceDate();
dao.createInvoice(invoice);
- List<IInvoice> invoices = dao.getInvoicesByAccount(accountId.toString());
+ List<Invoice> invoices = dao.getInvoicesByAccount(accountId.toString());
assertNotNull(invoices);
assertEquals(invoices.size(), 1);
- IInvoice thisInvoice = invoices.get(0);
+ Invoice thisInvoice = invoices.get(0);
assertEquals(invoice.getAccountId(), accountId);
assertTrue(thisInvoice.getInvoiceDate().compareTo(invoiceDate) == 0);
assertEquals(thisInvoice.getCurrency(), Currency.USD);
@@ -91,7 +88,7 @@ public class InvoiceDaoTests {
@Test
public void testRetrievalForNonExistentInvoiceId() {
- IInvoice invoice = dao.getInvoice(UUID.randomUUID().toString());
+ Invoice invoice = dao.getInvoice(UUID.randomUUID().toString());
assertNull(invoice);
}
@@ -99,7 +96,7 @@ public class InvoiceDaoTests {
public void testAddPayment() {
UUID accountId = UUID.randomUUID();
DateTime targetDate = new DateTime(2011, 10, 6, 0, 0, 0, 0);
- IInvoice invoice = new Invoice(accountId, targetDate, Currency.USD);
+ Invoice invoice = new InvoiceDefault(accountId, targetDate, Currency.USD);
DateTime paymentAttemptDate = new DateTime(2011, 6, 24, 12, 14, 36, 0);
BigDecimal paymentAmount = new BigDecimal("14.0");
@@ -116,7 +113,7 @@ public class InvoiceDaoTests {
public void testAddPaymentAttempt() {
UUID accountId = UUID.randomUUID();
DateTime targetDate = new DateTime(2011, 10, 6, 0, 0, 0, 0);
- IInvoice invoice = new Invoice(accountId, targetDate, Currency.USD);
+ Invoice invoice = new InvoiceDefault(accountId, targetDate, Currency.USD);
DateTime paymentAttemptDate = new DateTime(2011, 6, 24, 12, 14, 36, 0);
@@ -137,7 +134,7 @@ public class InvoiceDaoTests {
int existingInvoiceCount = invoices.size();
UUID accountId = UUID.randomUUID();
- IInvoice invoice = new Invoice(accountId, targetDate, Currency.USD);
+ Invoice invoice = new InvoiceDefault(accountId, targetDate, Currency.USD);
dao.createInvoice(invoice);
invoices = dao.getInvoicesForPayment(notionalDate.toDate(), NUMBER_OF_DAY_BETWEEN_RETRIES);
@@ -157,7 +154,7 @@ public class InvoiceDaoTests {
// create a new invoice with one item
UUID accountId = UUID.randomUUID();
DateTime targetDate = new DateTime(2011, 10, 6, 0, 0, 0, 0);
- IInvoice invoice = new Invoice(accountId, targetDate, Currency.USD);
+ Invoice invoice = new InvoiceDefault(accountId, targetDate, Currency.USD);
dao.createInvoice(invoice);
UUID invoiceId = invoice.getId();
@@ -226,7 +223,7 @@ public class InvoiceDaoTests {
// create invoice 1 (subscriptions 1-4)
- IInvoice invoice1 = new Invoice(accountId, targetDate, Currency.USD);
+ Invoice invoice1 = new InvoiceDefault(accountId, targetDate, Currency.USD);
dao.createInvoice(invoice1);
UUID invoiceId1 = invoice1.getId();
@@ -247,7 +244,7 @@ public class InvoiceDaoTests {
invoiceItemDao.createInvoiceItem(item4);
// create invoice 2 (subscriptions 1-3)
- Invoice invoice = new Invoice(accountId, targetDate, Currency.USD);
+ InvoiceDefault invoice = new InvoiceDefault(accountId, targetDate, Currency.USD);
dao.createInvoice(invoice);
UUID invoiceId2 = invoice.getId();
@@ -265,16 +262,16 @@ public class InvoiceDaoTests {
invoiceItemDao.createInvoiceItem(item7);
// check that each subscription returns the correct number of invoices
- List<IInvoice> items1 = dao.getInvoicesBySubscription(subscriptionId1.toString());
+ List<Invoice> items1 = dao.getInvoicesBySubscription(subscriptionId1.toString());
assertEquals(items1.size(), 2);
- List<IInvoice> items2 = dao.getInvoicesBySubscription(subscriptionId2.toString());
+ List<Invoice> items2 = dao.getInvoicesBySubscription(subscriptionId2.toString());
assertEquals(items2.size(), 2);
- List<IInvoice> items3 = dao.getInvoicesBySubscription(subscriptionId3.toString());
+ List<Invoice> items3 = dao.getInvoicesBySubscription(subscriptionId3.toString());
assertEquals(items3.size(), 2);
- List<IInvoice> items4 = dao.getInvoicesBySubscription(subscriptionId4.toString());
+ List<Invoice> items4 = dao.getInvoicesBySubscription(subscriptionId4.toString());
assertEquals(items4.size(), 1);
}
diff --git a/invoice/src/test/java/com/ning/billing/invoice/dao/InvoiceItemDaoTests.java b/invoice/src/test/java/com/ning/billing/invoice/dao/InvoiceItemDaoTests.java
index bd91261..54fd71d 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/dao/InvoiceItemDaoTests.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/dao/InvoiceItemDaoTests.java
@@ -21,9 +21,8 @@ import com.google.inject.Injector;
import com.google.inject.Stage;
import com.ning.billing.catalog.api.Currency;
import com.ning.billing.invoice.api.IInvoiceItem;
-import com.ning.billing.invoice.glue.InjectorMagic;
import com.ning.billing.invoice.glue.InvoiceModuleMock;
-import com.ning.billing.invoice.model.Invoice;
+import com.ning.billing.invoice.model.InvoiceDefault;
import com.ning.billing.invoice.model.InvoiceItem;
import org.apache.commons.io.IOUtils;
import org.joda.time.DateTime;
@@ -38,24 +37,23 @@ import java.util.UUID;
import static org.testng.Assert.*;
public class InvoiceItemDaoTests {
- private InvoiceItemDao dao;
- private IInvoiceDao invoiceDao;
+ private InvoiceItemDaoWrapper dao;
+ private InvoiceDao invoiceDao;
@BeforeClass(alwaysRun = true)
private void setup() throws IOException {
InvoiceModuleMock module = new InvoiceModuleMock();
- final String ddl = IOUtils.toString(InvoiceDao.class.getResourceAsStream("/com/ning/billing/invoice/ddl.sql"));
+ final String ddl = IOUtils.toString(InvoiceDaoWrapper.class.getResourceAsStream("/com/ning/billing/invoice/ddl.sql"));
module.createDb(ddl);
// Healthcheck test to make sure MySQL is setup properly
try {
final Injector injector = Guice.createInjector(Stage.DEVELOPMENT, module);
- InjectorMagic injectorMagic = injector.getInstance(InjectorMagic.class);
- dao = injector.getInstance(InvoiceItemDao.class);
+ dao = injector.getInstance(InvoiceItemDaoWrapper.class);
dao.test();
- invoiceDao = injector.getInstance(InvoiceDao.class);
+ invoiceDao = injector.getInstance(InvoiceDaoWrapper.class);
invoiceDao.test();
}
catch (Throwable t) {
@@ -124,7 +122,7 @@ public class InvoiceItemDaoTests {
public void testGetInvoiceItemsByAccountId() {
UUID accountId = UUID.randomUUID();
DateTime targetDate = new DateTime(2011, 5, 23, 0, 0, 0, 0);
- Invoice invoice = new Invoice(accountId, targetDate, Currency.USD);
+ InvoiceDefault invoice = new InvoiceDefault(accountId, targetDate, Currency.USD);
invoiceDao.createInvoice(invoice);
diff --git a/invoice/src/test/java/com/ning/billing/invoice/tests/DefaultInvoiceGeneratorTests.java b/invoice/src/test/java/com/ning/billing/invoice/tests/DefaultInvoiceGeneratorTests.java
index 6cf52e4..ee4d5fc 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/tests/DefaultInvoiceGeneratorTests.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/tests/DefaultInvoiceGeneratorTests.java
@@ -22,10 +22,10 @@ import com.ning.billing.entitlement.api.billing.BillingMode;
import com.ning.billing.entitlement.api.billing.IBillingEvent;
import com.ning.billing.invoice.api.BillingEvent;
import com.ning.billing.invoice.api.BillingEventSet;
-import com.ning.billing.invoice.api.IInvoice;
import com.ning.billing.invoice.api.IInvoiceItem;
+import com.ning.billing.invoice.api.Invoice;
import com.ning.billing.invoice.model.DefaultInvoiceGenerator;
-import com.ning.billing.invoice.model.IInvoiceGenerator;
+import com.ning.billing.invoice.model.InvoiceGenerator;
import com.ning.billing.invoice.model.InvoiceItem;
import com.ning.billing.invoice.model.InvoiceItemList;
import org.joda.time.DateTime;
@@ -39,12 +39,12 @@ import static org.testng.Assert.assertNotNull;
@Test(groups = {"invoicing", "invoiceGenerator"})
public class DefaultInvoiceGeneratorTests extends InvoicingTestBase {
- private final IInvoiceGenerator generator = new DefaultInvoiceGenerator();
+ private final InvoiceGenerator generator = new DefaultInvoiceGenerator();
@Test
public void testWithNullEventSetAndNullInvoiceSet() {
UUID accountId = UUID.randomUUID();
- IInvoice invoice = generator.generateInvoice(accountId, null, null, new DateTime(), Currency.USD);
+ Invoice invoice = generator.generateInvoice(accountId, null, null, new DateTime(), Currency.USD);
assertNotNull(invoice);
assertEquals(invoice.getNumberOfItems(), 0);
@@ -57,7 +57,7 @@ public class DefaultInvoiceGeneratorTests extends InvoicingTestBase {
InvoiceItemList existingInvoiceItems = new InvoiceItemList();
UUID accountId = UUID.randomUUID();
- IInvoice invoice = generator.generateInvoice(accountId, events, existingInvoiceItems, new DateTime(), Currency.USD);
+ Invoice invoice = generator.generateInvoice(accountId, events, existingInvoiceItems, new DateTime(), Currency.USD);
assertNotNull(invoice);
assertEquals(invoice.getNumberOfItems(), 0);
@@ -82,7 +82,7 @@ public class DefaultInvoiceGeneratorTests extends InvoicingTestBase {
DateTime targetDate = buildDateTime(2011, 10, 3);
UUID accountId = UUID.randomUUID();
- IInvoice invoice = generator.generateInvoice(accountId, events, existingInvoiceItems, targetDate, Currency.USD);
+ Invoice invoice = generator.generateInvoice(accountId, events, existingInvoiceItems, targetDate, Currency.USD);
assertNotNull(invoice);
assertEquals(invoice.getNumberOfItems(), 1);
@@ -108,7 +108,7 @@ public class DefaultInvoiceGeneratorTests extends InvoicingTestBase {
DateTime targetDate = buildDateTime(2011, 10, 3);
UUID accountId = UUID.randomUUID();
- IInvoice invoice = generator.generateInvoice(accountId, events, existingInvoiceItems, targetDate, Currency.USD);
+ Invoice invoice = generator.generateInvoice(accountId, events, existingInvoiceItems, targetDate, Currency.USD);
assertNotNull(invoice);
assertEquals(invoice.getNumberOfItems(), 1);
@@ -138,7 +138,7 @@ public class DefaultInvoiceGeneratorTests extends InvoicingTestBase {
InvoiceItemList existingInvoiceItems = new InvoiceItemList();
DateTime targetDate = buildDateTime(2011, 10, 3);
UUID accountId = UUID.randomUUID();
- IInvoice invoice = generator.generateInvoice(accountId, events, existingInvoiceItems, targetDate, Currency.USD);
+ Invoice invoice = generator.generateInvoice(accountId, events, existingInvoiceItems, targetDate, Currency.USD);
assertNotNull(invoice);
assertEquals(invoice.getNumberOfItems(), 2);
@@ -165,7 +165,7 @@ public class DefaultInvoiceGeneratorTests extends InvoicingTestBase {
InvoiceItemList existingInvoiceItems = new InvoiceItemList();
DateTime targetDate = buildDateTime(2011, 12, 3);
UUID accountId = UUID.randomUUID();
- IInvoice invoice = generator.generateInvoice(accountId, events, existingInvoiceItems, targetDate, Currency.USD);
+ Invoice invoice = generator.generateInvoice(accountId, events, existingInvoiceItems, targetDate, Currency.USD);
assertNotNull(invoice);
assertEquals(invoice.getNumberOfItems(), 2);
@@ -209,7 +209,7 @@ public class DefaultInvoiceGeneratorTests extends InvoicingTestBase {
InvoiceItemList existingInvoiceItems = new InvoiceItemList();
DateTime targetDate = buildDateTime(2011, 12, 3);
UUID accountId = UUID.randomUUID();
- IInvoice invoice = generator.generateInvoice(accountId, events, existingInvoiceItems, targetDate, Currency.USD);
+ Invoice invoice = generator.generateInvoice(accountId, events, existingInvoiceItems, targetDate, Currency.USD);
assertNotNull(invoice);
assertEquals(invoice.getNumberOfItems(), 3);
@@ -237,7 +237,7 @@ public class DefaultInvoiceGeneratorTests extends InvoicingTestBase {
DateTime targetDate = buildDateTime(2011, 12, 3);
UUID accountId = UUID.randomUUID();
- IInvoice invoice = generator.generateInvoice(accountId, events, existingInvoiceItems, targetDate, Currency.USD);
+ Invoice invoice = generator.generateInvoice(accountId, events, existingInvoiceItems, targetDate, Currency.USD);
assertNotNull(invoice);
assertEquals(invoice.getNumberOfItems(), 0);
@@ -415,7 +415,7 @@ public class DefaultInvoiceGeneratorTests extends InvoicingTestBase {
private void testInvoiceGeneration(BillingEventSet events, InvoiceItemList existingInvoiceItems, DateTime targetDate, int expectedNumberOfItems, BigDecimal expectedAmount) {
Currency currency = Currency.USD;
UUID accountId = UUID.randomUUID();
- IInvoice invoice = generator.generateInvoice(accountId, events, existingInvoiceItems, targetDate, currency);
+ Invoice invoice = generator.generateInvoice(accountId, events, existingInvoiceItems, targetDate, currency);
existingInvoiceItems.addAll(invoice.getItems());
assertNotNull(invoice);
assertEquals(invoice.getNumberOfItems(), expectedNumberOfItems);
diff --git a/invoice/src/test/java/com/ning/billing/invoice/tests/inAdvance/ProRationInAdvanceTestBase.java b/invoice/src/test/java/com/ning/billing/invoice/tests/inAdvance/ProRationInAdvanceTestBase.java
index 2948557..14392a8 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/tests/inAdvance/ProRationInAdvanceTestBase.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/tests/inAdvance/ProRationInAdvanceTestBase.java
@@ -16,7 +16,7 @@
package com.ning.billing.invoice.tests.inAdvance;
-import com.ning.billing.invoice.model.IBillingMode;
+import com.ning.billing.invoice.model.BillingMode;
import com.ning.billing.invoice.model.InAdvanceBillingMode;
import com.ning.billing.invoice.tests.ProRationTestBase;
import org.testng.annotations.Test;
@@ -24,7 +24,7 @@ import org.testng.annotations.Test;
@Test(groups = {"invoicing", "proRation"})
public abstract class ProRationInAdvanceTestBase extends ProRationTestBase {
@Override
- protected IBillingMode getBillingMode() {
+ protected BillingMode getBillingMode() {
return new InAdvanceBillingMode();
}
}
diff --git a/invoice/src/test/java/com/ning/billing/invoice/tests/inAdvance/ValidationProRationTests.java b/invoice/src/test/java/com/ning/billing/invoice/tests/inAdvance/ValidationProRationTests.java
index c57fe32..9de01bd 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/tests/inAdvance/ValidationProRationTests.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/tests/inAdvance/ValidationProRationTests.java
@@ -17,7 +17,7 @@
package com.ning.billing.invoice.tests.inAdvance;
import com.ning.billing.catalog.api.BillingPeriod;
-import com.ning.billing.invoice.model.IBillingMode;
+import com.ning.billing.invoice.model.BillingMode;
import com.ning.billing.invoice.model.InAdvanceBillingMode;
import com.ning.billing.invoice.model.InvalidDateSequenceException;
import com.ning.billing.invoice.tests.ProRationTestBase;
@@ -35,7 +35,7 @@ public class ValidationProRationTests extends ProRationTestBase {
}
@Override
- protected IBillingMode getBillingMode() {
+ protected BillingMode getBillingMode() {
return new InAdvanceBillingMode();
}
diff --git a/invoice/src/test/java/com/ning/billing/invoice/tests/ProRationTestBase.java b/invoice/src/test/java/com/ning/billing/invoice/tests/ProRationTestBase.java
index 835836e..174017b 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/tests/ProRationTestBase.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/tests/ProRationTestBase.java
@@ -17,7 +17,7 @@
package com.ning.billing.invoice.tests;
import com.ning.billing.catalog.api.BillingPeriod;
-import com.ning.billing.invoice.model.IBillingMode;
+import com.ning.billing.invoice.model.BillingMode;
import com.ning.billing.invoice.model.InvalidDateSequenceException;
import org.joda.time.DateTime;
@@ -27,7 +27,7 @@ import static org.testng.Assert.assertEquals;
import static org.testng.Assert.fail;
public abstract class ProRationTestBase extends InvoicingTestBase{
- protected abstract IBillingMode getBillingMode();
+ protected abstract BillingMode getBillingMode();
protected abstract BillingPeriod getBillingPeriod();
protected void testCalculateNumberOfBillingCycles(DateTime startDate, DateTime targetDate, int billingCycleDay, BigDecimal expectedValue) throws InvalidDateSequenceException {