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 a3b26fc..497d139 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,15 +16,14 @@
package com.ning.billing.account.api.user;
+import java.util.List;
+import java.util.UUID;
import com.google.inject.Inject;
import com.ning.billing.account.api.Account;
import com.ning.billing.account.api.AccountData;
import com.ning.billing.account.api.DefaultAccount;
import com.ning.billing.account.dao.AccountDao;
-import java.util.List;
-import java.util.UUID;
-
public class DefaultAccountUserApi implements com.ning.billing.account.api.AccountUserApi {
private final AccountDao dao;
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 02b4549..52d43ab 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
@@ -17,82 +17,8 @@
package com.ning.billing.account.dao;
import com.ning.billing.account.api.Account;
-import com.ning.billing.account.api.AccountData;
-import com.ning.billing.account.api.user.AccountBuilder;
-import com.ning.billing.catalog.api.Currency;
import com.ning.billing.util.entity.EntityDao;
-import org.skife.jdbi.v2.SQLStatement;
-import org.skife.jdbi.v2.StatementContext;
-import org.skife.jdbi.v2.sqlobject.Bind;
-import org.skife.jdbi.v2.sqlobject.Binder;
-import org.skife.jdbi.v2.sqlobject.BinderFactory;
-import org.skife.jdbi.v2.sqlobject.BindingAnnotation;
-import org.skife.jdbi.v2.sqlobject.SqlQuery;
-import org.skife.jdbi.v2.sqlobject.SqlUpdate;
-import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper;
-import org.skife.jdbi.v2.sqlobject.stringtemplate.ExternalizedSqlViaStringTemplate3;
-import org.skife.jdbi.v2.tweak.ResultSetMapper;
-import java.lang.annotation.Annotation;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.UUID;
-
-@ExternalizedSqlViaStringTemplate3
-@RegisterMapper(AccountDaoWrapper.AccountMapper.class)
public interface AccountDao extends EntityDao<Account> {
- @SqlQuery
- public Account getAccountByKey(@Bind("externalKey") final String key);
-
- @Override
- @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 name = result.getString("name");
- int firstNameLength = result.getInt("first_name_length");
- String phone = result.getString("phone");
- int billingCycleDay = result.getInt("billing_cycle_day");
- Currency currency = Currency.valueOf(result.getString("currency"));
- String paymentProviderName = result.getString("payment_provider_name");
-
- return new AccountBuilder(id).externalKey(externalKey).email(email)
- .name(name).firstNameLength(firstNameLength)
- .phone(phone).currency(currency)
- .billingCycleDay(billingCycleDay)
- .paymentProviderName(paymentProviderName).build();
- }
- }
-
- @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, AccountData>() {
- public void bind(SQLStatement q, AccountBinder bind, AccountData account) {
- q.bind("id", account.getId().toString());
- q.bind("externalKey", account.getExternalKey());
- q.bind("email", account.getEmail());
- q.bind("name", account.getName());
- q.bind("firstNameLength", account.getFirstNameLength());
- q.bind("phone", account.getPhone());
- q.bind("currency", account.getCurrency().toString());
- q.bind("billingCycleDay", account.getBillCycleDay());
- q.bind("paymentProviderName", account.getPaymentProviderName());
- }
- };
- }
- }
- }
+ public Account getAccountByKey(String key);
}
diff --git a/account/src/main/java/com/ning/billing/account/dao/AccountSqlDao.java b/account/src/main/java/com/ning/billing/account/dao/AccountSqlDao.java
new file mode 100644
index 0000000..4c2a550
--- /dev/null
+++ b/account/src/main/java/com/ning/billing/account/dao/AccountSqlDao.java
@@ -0,0 +1,100 @@
+/*
+ * 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.ning.billing.account.api.Account;
+import com.ning.billing.account.api.AccountData;
+import com.ning.billing.account.api.user.AccountBuilder;
+import com.ning.billing.catalog.api.Currency;
+import com.ning.billing.util.entity.EntityDao;
+import org.skife.jdbi.v2.SQLStatement;
+import org.skife.jdbi.v2.StatementContext;
+import org.skife.jdbi.v2.sqlobject.Bind;
+import org.skife.jdbi.v2.sqlobject.Binder;
+import org.skife.jdbi.v2.sqlobject.BinderFactory;
+import org.skife.jdbi.v2.sqlobject.BindingAnnotation;
+import org.skife.jdbi.v2.sqlobject.SqlQuery;
+import org.skife.jdbi.v2.sqlobject.SqlUpdate;
+import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper;
+import org.skife.jdbi.v2.sqlobject.mixins.Transactional;
+import org.skife.jdbi.v2.sqlobject.mixins.Transmogrifier;
+import org.skife.jdbi.v2.sqlobject.stringtemplate.ExternalizedSqlViaStringTemplate3;
+import org.skife.jdbi.v2.tweak.ResultSetMapper;
+
+import java.lang.annotation.Annotation;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.UUID;
+
+@ExternalizedSqlViaStringTemplate3
+@RegisterMapper(AccountSqlDao.AccountMapper.class)
+public interface AccountSqlDao extends EntityDao<Account>, Transactional<AccountSqlDao>, Transmogrifier {
+ @SqlQuery
+ public Account getAccountByKey(@Bind("externalKey") final String key);
+
+ @Override
+ @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 name = result.getString("name");
+ int firstNameLength = result.getInt("first_name_length");
+ String phone = result.getString("phone");
+ int billingCycleDay = result.getInt("billing_cycle_day");
+ Currency currency = Currency.valueOf(result.getString("currency"));
+ String paymentProviderName = result.getString("payment_provider_name");
+
+ return new AccountBuilder(id).externalKey(externalKey).email(email)
+ .name(name).firstNameLength(firstNameLength)
+ .phone(phone).currency(currency)
+ .billingCycleDay(billingCycleDay)
+ .paymentProviderName(paymentProviderName).build();
+ }
+ }
+
+ @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, AccountData>() {
+ public void bind(SQLStatement q, AccountBinder bind, AccountData account) {
+ q.bind("id", account.getId().toString());
+ q.bind("externalKey", account.getExternalKey());
+ q.bind("email", account.getEmail());
+ q.bind("name", account.getName());
+ q.bind("firstNameLength", account.getFirstNameLength());
+ q.bind("phone", account.getPhone());
+ q.bind("currency", account.getCurrency().toString());
+ q.bind("billingCycleDay", account.getBillCycleDay());
+ q.bind("paymentProviderName", account.getPaymentProviderName());
+ }
+ };
+ }
+ }
+ }
+}
diff --git a/account/src/main/java/com/ning/billing/account/glue/AccountModule.java b/account/src/main/java/com/ning/billing/account/glue/AccountModule.java
index 1ffa28a..d70548d 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
@@ -20,7 +20,8 @@ import com.google.inject.AbstractModule;
import com.ning.billing.account.api.AccountUserApi;
import com.ning.billing.account.api.user.DefaultAccountUserApi;
import com.ning.billing.account.dao.AccountDao;
-import com.ning.billing.account.dao.AccountDaoWrapper;
+import com.ning.billing.account.dao.AccountSqlDao;
+import com.ning.billing.account.dao.DefaultAccountDao;
import org.skife.config.ConfigurationObjectFactory;
public class AccountModule extends AbstractModule {
@@ -36,28 +37,18 @@ public class AccountModule extends AbstractModule {
}
private void installAccountDao() {
- bind(AccountDao.class).to(AccountDaoWrapper.class).asEagerSingleton();
+ bind(AccountDao.class).to(DefaultAccountDao.class).asEagerSingleton();
}
private void installAccountUserApi() {
bind(AccountUserApi.class).to(DefaultAccountUserApi.class).asEagerSingleton();
}
-// private void installFieldStore() {
-// bind(FieldStoreDao.class).to(FieldStoreDaoWrapper.class).asEagerSingleton();
-// }
-//
-// private void installTagStore() {
-// bind(TagStoreDao.class).to(TagStoreDaoWrapper.class).asEagerSingleton();
-// }
-
@Override
protected void configure() {
installConfig();
installAccountCore();
installAccountDao();
installAccountUserApi();
-// installFieldStore();
-// installTagStore();
}
}
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 d191a0e..ce9570f 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
@@ -40,7 +40,7 @@ public abstract class AccountDaoTestBase {
// Healthcheck test to make sure MySQL is setup properly
try {
AccountModuleMock module = new AccountModuleMock();
- final String ddl = IOUtils.toString(AccountDao.class.getResourceAsStream("/com/ning/billing/account/ddl.sql"));
+ final String ddl = IOUtils.toString(AccountSqlDao.class.getResourceAsStream("/com/ning/billing/account/ddl.sql"));
module.createDb(ddl);
final Injector injector = Guice.createInjector(Stage.DEVELOPMENT, module);
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
index 18aac2e..826d4ba 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceDaoWrapper.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceDaoWrapper.java
@@ -69,31 +69,22 @@ public class InvoiceDaoWrapper implements InvoiceDao {
dbi.inTransaction(new TransactionCallback<Void>() {
@Override
public Void inTransaction(Handle conn, TransactionStatus status) throws Exception {
- try {
- conn.begin();
-
- InvoiceDao invoiceDao = conn.attach(InvoiceDao.class);
- Invoice currentInvoice = invoiceDao.getById(invoice.getId().toString());
- invoiceDao.save(invoice);
+ InvoiceDao invoiceDao = conn.attach(InvoiceDao.class);
+ Invoice currentInvoice = invoiceDao.getById(invoice.getId().toString());
+ invoiceDao.save(invoice);
// List<InvoiceItem> invoiceItems = invoice.getItems();
// InvoiceItemDao invoiceItemDao = conn.attach(InvoiceItemDao.class);
// invoiceItemDao.save(invoiceItems);
- if (currentInvoice == null) {
- InvoiceCreationNotification event;
- event = new DefaultInvoiceCreationNotification(invoice.getId(), invoice.getAccountId(),
- invoice.getAmountOutstanding(), invoice.getCurrency(),
- invoice.getInvoiceDate());
- eventBus.post(event);
- } else {
-
- }
+ if (currentInvoice == null) {
+ InvoiceCreationNotification event;
+ event = new DefaultInvoiceCreationNotification(invoice.getId(), invoice.getAccountId(),
+ invoice.getAmountOutstanding(), invoice.getCurrency(),
+ invoice.getInvoiceDate());
+ eventBus.post(event);
+ } else {
- conn.commit();
- } catch (Exception e) {
- conn.rollback();
- throw e;
}
return null;
diff --git a/util/src/main/java/com/ning/billing/util/customfield/dao/FieldStoreDao.java b/util/src/main/java/com/ning/billing/util/customfield/dao/FieldStoreDao.java
index 96a3976..680a826 100644
--- a/util/src/main/java/com/ning/billing/util/customfield/dao/FieldStoreDao.java
+++ b/util/src/main/java/com/ning/billing/util/customfield/dao/FieldStoreDao.java
@@ -33,6 +33,7 @@ import org.skife.jdbi.v2.sqlobject.BinderFactory;
import org.skife.jdbi.v2.sqlobject.BindingAnnotation;
import org.skife.jdbi.v2.sqlobject.SqlBatch;
import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper;
+import org.skife.jdbi.v2.sqlobject.mixins.Transmogrifier;
import org.skife.jdbi.v2.sqlobject.stringtemplate.ExternalizedSqlViaStringTemplate3;
import org.skife.jdbi.v2.tweak.ResultSetMapper;
import com.ning.billing.util.customfield.CustomField;
@@ -41,7 +42,7 @@ import com.ning.billing.util.entity.EntityCollectionDao;
@ExternalizedSqlViaStringTemplate3
@RegisterMapper(FieldStoreDao.CustomFieldMapper.class)
-public interface FieldStoreDao extends EntityCollectionDao<CustomField> {
+public interface FieldStoreDao extends EntityCollectionDao<CustomField>, Transmogrifier {
@Override
@SqlBatch
public void save(@Bind("objectId") final String objectId,