Details
diff --git a/account/src/main/java/com/ning/billing/account/dao/AuditedAccountDao.java b/account/src/main/java/com/ning/billing/account/dao/AuditedAccountDao.java
index 47418dd..3854d11 100644
--- a/account/src/main/java/com/ning/billing/account/dao/AuditedAccountDao.java
+++ b/account/src/main/java/com/ning/billing/account/dao/AuditedAccountDao.java
@@ -34,6 +34,7 @@ import com.ning.billing.account.api.AccountCreationEvent;
import com.ning.billing.account.api.user.DefaultAccountChangeEvent;
import com.ning.billing.account.api.user.DefaultAccountCreationEvent;
import com.ning.billing.util.ChangeType;
+import com.ning.billing.util.callcontext.InternalCallContextFactory;
import com.ning.billing.util.svcsapi.bus.Bus;
import com.ning.billing.util.svcsapi.bus.Bus.EventBusException;
import com.ning.billing.util.callcontext.InternalCallContext;
@@ -51,11 +52,13 @@ public class AuditedAccountDao implements AccountDao {
private final AccountSqlDao accountSqlDao;
private final Bus eventBus;
+ private final InternalCallContextFactory internalCallContextFactory;
@Inject
- public AuditedAccountDao(final IDBI dbi, final Bus eventBus) {
+ public AuditedAccountDao(final IDBI dbi, final Bus eventBus, final InternalCallContextFactory internalCallContextFactory) {
this.eventBus = eventBus;
this.accountSqlDao = dbi.onDemand(AccountSqlDao.class);
+ this.internalCallContextFactory = internalCallContextFactory;
}
@Override
@@ -112,7 +115,7 @@ public class AuditedAccountDao implements AccountDao {
final AccountCreationEvent creationEvent = new DefaultAccountCreationEvent(account, context.getUserToken());
try {
- eventBus.postFromTransaction(creationEvent, transactionalDao, context);
+ eventBus.postFromTransaction(creationEvent, transactionalDao, internalCallContextFactory.createInternalCallContext(recordId, context));
} catch (EventBusException e) {
log.warn("Failed to post account creation event for account " + account.getId(), e);
}
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 1bc449f..594faa5 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
@@ -22,6 +22,8 @@ import org.skife.jdbi.v2.IDBI;
import org.testng.annotations.BeforeClass;
import com.ning.billing.account.AccountTestSuiteWithEmbeddedDB;
+import com.ning.billing.util.callcontext.InternalCallContextFactory;
+import com.ning.billing.util.clock.ClockMock;
import com.ning.billing.util.svcsapi.bus.Bus;
import com.ning.billing.util.svcsapi.bus.BusService;
import com.ning.billing.util.bus.DefaultBusService;
@@ -48,7 +50,7 @@ public abstract class AccountDaoTestBase extends AccountTestSuiteWithEmbeddedDB
final BusService busService = new DefaultBusService(bus);
((DefaultBusService) busService).startBus();
- accountDao = new AuditedAccountDao(dbi, bus);
+ accountDao = new AuditedAccountDao(dbi, bus, new InternalCallContextFactory(dbi, new ClockMock()));
// Health check test to make sure MySQL is setup properly
accountDao.test(internalCallContext);
diff --git a/analytics/src/test/java/com/ning/billing/analytics/TestBusinessTagRecorder.java b/analytics/src/test/java/com/ning/billing/analytics/TestBusinessTagRecorder.java
index c4d1c4d..51700d1 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/TestBusinessTagRecorder.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/TestBusinessTagRecorder.java
@@ -54,6 +54,7 @@ import com.ning.billing.mock.MockAccountBuilder;
import com.ning.billing.util.bus.InMemoryBus;
import com.ning.billing.util.callcontext.DefaultCallContextFactory;
import com.ning.billing.util.callcontext.InternalCallContextFactory;
+import com.ning.billing.util.clock.ClockMock;
import com.ning.billing.util.clock.DefaultClock;
import com.ning.billing.util.dao.ObjectType;
import com.ning.billing.util.notificationq.DefaultNotificationQueueService;
@@ -75,7 +76,7 @@ public class TestBusinessTagRecorder extends AnalyticsTestSuiteWithEmbeddedDB {
final BusinessInvoicePaymentTagSqlDao invoicePaymentTagSqlDao = dbi.onDemand(BusinessInvoicePaymentTagSqlDao.class);
subscriptionTransitionTagSqlDao = dbi.onDemand(BusinessSubscriptionTransitionTagSqlDao.class);
eventBus = new InMemoryBus();
- final AccountDao accountDao = new AuditedAccountDao(dbi, eventBus);
+ final AccountDao accountDao = new AuditedAccountDao(dbi, eventBus, new InternalCallContextFactory(dbi, new ClockMock()));
final AccountEmailDao accountEmailDao = new AuditedAccountEmailDao(dbi);
final DefaultClock clock = new DefaultClock();
callContextFactory = new DefaultCallContextFactory(clock);
diff --git a/util/src/main/java/com/ning/billing/util/callcontext/InternalCallContextFactory.java b/util/src/main/java/com/ning/billing/util/callcontext/InternalCallContextFactory.java
index 8ad3651..eb3dea1 100644
--- a/util/src/main/java/com/ning/billing/util/callcontext/InternalCallContextFactory.java
+++ b/util/src/main/java/com/ning/billing/util/callcontext/InternalCallContextFactory.java
@@ -144,6 +144,13 @@ public class InternalCallContextFactory {
return new InternalCallContext(tenantRecordId, accountRecordId, context);
}
+ // Used when we need to re-hydrate the context with the account_record_id (when creating the account)
+ public InternalCallContext createInternalCallContext(final Long accountRecordId, final InternalCallContext context) {
+ return new InternalCallContext(context.getTenantRecordId(), accountRecordId, context.getUserToken(), context.getUserName(),
+ context.getCallOrigin(), context.getUserType(), context.getReasonCode(), context.getComment(),
+ context.getCreatedDate(), context.getUpdatedDate());
+ }
+
private Long getTenantRecordId(final TenantContext context) {
// Default to single default tenant (e.g. single tenant mode)
if (context.getTenantId() == null) {