killbill-memoizeit

Details

account/pom.xml 2(+1 -1)

diff --git a/account/pom.xml b/account/pom.xml
index c48b8b2..6fe4c14 100644
--- a/account/pom.xml
+++ b/account/pom.xml
@@ -13,7 +13,7 @@
     <parent>
         <groupId>com.ning.billing</groupId>
         <artifactId>killbill</artifactId>
-        <version>0.1.8-SNAPSHOT</version>
+        <version>0.1.9</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
     <artifactId>killbill-account</artifactId>
diff --git a/analytics/pom.xml b/analytics/pom.xml
index d5fff4c..3f4b71a 100644
--- a/analytics/pom.xml
+++ b/analytics/pom.xml
@@ -13,7 +13,7 @@
     <parent>
         <groupId>com.ning.billing</groupId>
         <artifactId>killbill</artifactId>
-        <version>0.1.8-SNAPSHOT</version>
+        <version>0.1.9</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
     <artifactId>killbill-analytics</artifactId>

api/pom.xml 2(+1 -1)

diff --git a/api/pom.xml b/api/pom.xml
index ac7f6c9..ffc8410 100644
--- a/api/pom.xml
+++ b/api/pom.xml
@@ -13,7 +13,7 @@
     <parent>
         <groupId>com.ning.billing</groupId>
         <artifactId>killbill</artifactId>
-        <version>0.1.8-SNAPSHOT</version>
+        <version>0.1.9</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
     <artifactId>killbill-api</artifactId>

beatrix/pom.xml 2(+1 -1)

diff --git a/beatrix/pom.xml b/beatrix/pom.xml
index 28f478f..f209456 100644
--- a/beatrix/pom.xml
+++ b/beatrix/pom.xml
@@ -13,7 +13,7 @@
     <parent>
         <groupId>com.ning.billing</groupId>
         <artifactId>killbill</artifactId>
-        <version>0.1.8-SNAPSHOT</version>
+        <version>0.1.9</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
     <artifactId>killbill-beatrix</artifactId>
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegration.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegration.java
index 0b509e3..e334966 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegration.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegration.java
@@ -19,6 +19,7 @@ package com.ning.billing.beatrix.integration;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNotNull;
 import static org.testng.Assert.assertTrue;
+import static org.testng.Assert.fail;
 
 import java.io.IOException;
 import java.math.BigDecimal;
@@ -33,6 +34,7 @@ import com.ning.billing.entitlement.api.user.EntitlementUserApiException;
 
 import com.ning.billing.invoice.api.Invoice;
 import com.ning.billing.invoice.api.InvoiceItem;
+import com.ning.billing.invoice.model.InvoicingConfiguration;
 import com.ning.billing.util.callcontext.CallContext;
 import com.ning.billing.util.callcontext.CallOrigin;
 import com.ning.billing.util.callcontext.UserType;
@@ -82,8 +84,8 @@ import com.ning.billing.util.bus.BusService;
 @Test(groups = "slow")
 @Guice(modules = {MockModule.class})
 public class TestIntegration {
-    private static final int NUMBER_OF_DECIMALS = 4;
-    private static final int ROUNDING_METHOD = BigDecimal.ROUND_HALF_EVEN;
+    private static final int NUMBER_OF_DECIMALS = InvoicingConfiguration.getNumberOfDecimals();
+    private static final int ROUNDING_METHOD = InvoicingConfiguration.getRoundingMode();
 
     private static final BigDecimal ONE = new BigDecimal("1.0000").setScale(NUMBER_OF_DECIMALS);
     private static final BigDecimal TWENTY_NINE = new BigDecimal("29.0000").setScale(NUMBER_OF_DECIMALS);
@@ -244,7 +246,9 @@ public class TestIntegration {
             }
         }
 
-        assertTrue(wasFound);
+        if (!wasFound) {
+            fail();
+        }
 
         DateTime ctd = subscription.getChargedThroughDate();
         assertNotNull(ctd);

catalog/pom.xml 2(+1 -1)

diff --git a/catalog/pom.xml b/catalog/pom.xml
index dee138d..4f08109 100644
--- a/catalog/pom.xml
+++ b/catalog/pom.xml
@@ -13,7 +13,7 @@
     <parent>
         <groupId>com.ning.billing</groupId>
         <artifactId>killbill</artifactId>
-        <version>0.1.8-SNAPSHOT</version>
+        <version>0.1.9</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
     <artifactId>killbill-catalog</artifactId>
diff --git a/entitlement/pom.xml b/entitlement/pom.xml
index cccf568..602639f 100644
--- a/entitlement/pom.xml
+++ b/entitlement/pom.xml
@@ -13,7 +13,7 @@
     <parent>
         <groupId>com.ning.billing</groupId>
         <artifactId>killbill</artifactId>
-        <version>0.1.8-SNAPSHOT</version>
+        <version>0.1.9</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
     <artifactId>killbill-entitlement</artifactId>
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/BundleSqlDao.java b/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/BundleSqlDao.java
index d9d9381..bccd559 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/BundleSqlDao.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/BundleSqlDao.java
@@ -18,6 +18,8 @@ package com.ning.billing.entitlement.engine.dao;
 
 import com.ning.billing.entitlement.api.user.SubscriptionBundle;
 import com.ning.billing.entitlement.api.user.SubscriptionBundleData;
+import com.ning.billing.util.callcontext.CallContext;
+import com.ning.billing.util.callcontext.CallContextBinder;
 import com.ning.billing.util.dao.BinderBase;
 import com.ning.billing.util.dao.MapperBase;
 import org.joda.time.DateTime;
@@ -43,7 +45,8 @@ import java.util.UUID;
 public interface BundleSqlDao extends Transactional<BundleSqlDao>, CloseMe, Transmogrifier {
 
     @SqlUpdate
-    public void insertBundle(@Bind(binder = SubscriptionBundleBinder.class) SubscriptionBundleData bundle);
+    public void insertBundle(@Bind(binder = SubscriptionBundleBinder.class) SubscriptionBundleData bundle,
+                             @CallContextBinder final CallContext context);
 
     @SqlQuery
     @Mapper(ISubscriptionBundleSqlMapper.class)
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/EntitlementSqlDao.java b/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/EntitlementSqlDao.java
index b0f1147..c907bde 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/EntitlementSqlDao.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/EntitlementSqlDao.java
@@ -125,7 +125,7 @@ public class EntitlementSqlDao implements EntitlementDao {
         return bundlesDao.inTransaction(new Transaction<SubscriptionBundle, BundleSqlDao>() {
             @Override
             public SubscriptionBundle inTransaction(BundleSqlDao bundlesDao, TransactionStatus status) {
-                bundlesDao.insertBundle(bundle);
+                bundlesDao.insertBundle(bundle, context);
 
                 AuditSqlDao auditSqlDao = bundlesDao.become(AuditSqlDao.class);
                 String bundleId = bundle.getId().toString();
@@ -210,7 +210,7 @@ public class EntitlementSqlDao implements EntitlementDao {
             public Void inTransaction(EventSqlDao dao,
                     TransactionStatus status) throws Exception {
                 cancelNextPhaseEventFromTransaction(subscriptionId, dao, context);
-                dao.insertEvent(nextPhase);
+                dao.insertEvent(nextPhase, context);
                 AuditSqlDao auditSqlDao = dao.become(AuditSqlDao.class);
                 auditSqlDao.insertAuditFromTransaction(ENTITLEMENT_EVENTS_TABLE_NAME, nextPhase.getId().toString(), ChangeType.INSERT, context);
 
@@ -259,7 +259,7 @@ public class EntitlementSqlDao implements EntitlementDao {
                 List<String> eventIds = new ArrayList<String>();
 
                 for (final EntitlementEvent cur : initialEvents) {
-                    eventsDaoFromSameTransaction.insertEvent(cur);
+                    eventsDaoFromSameTransaction.insertEvent(cur, context);
                     eventIds.add(cur.getId().toString()); // collect ids for batch audit log insert
                     recordFutureNotificationFromTransaction(dao,
                             cur.getEffectiveDate(),
@@ -289,7 +289,7 @@ public class EntitlementSqlDao implements EntitlementDao {
 
                 List<String> eventIds = new ArrayList<String>();
                 for (final EntitlementEvent cur : recreateEvents) {
-                    dao.insertEvent(cur);
+                    dao.insertEvent(cur, context);
                     eventIds.add(cur.getId().toString()); // gather event ids for batch audit insert
                     recordFutureNotificationFromTransaction(dao,
                             cur.getEffectiveDate(),
@@ -318,7 +318,7 @@ public class EntitlementSqlDao implements EntitlementDao {
                 cancelNextCancelEventFromTransaction(subscriptionId, dao, context);
                 cancelNextChangeEventFromTransaction(subscriptionId, dao, context);
                 cancelNextPhaseEventFromTransaction(subscriptionId, dao, context);
-                dao.insertEvent(cancelEvent);
+                dao.insertEvent(cancelEvent, context);
                 AuditSqlDao auditSqlDao = dao.become(AuditSqlDao.class);
                 String cancelEventId = cancelEvent.getId().toString();
                 auditSqlDao.insertAuditFromTransaction(ENTITLEMENT_EVENTS_TABLE_NAME, cancelEventId, ChangeType.INSERT, context);
@@ -359,12 +359,12 @@ public class EntitlementSqlDao implements EntitlementDao {
                 }
 
                 if (existingCancelId != null) {
-                    dao.unactiveEvent(existingCancelId.toString(), now);
+                    dao.unactiveEvent(existingCancelId.toString(), context);
                     String deactivatedEventId = existingCancelId.toString();
 
                     List<String> eventIds = new ArrayList<String>();
                     for (final EntitlementEvent cur : uncancelEvents) {
-                        dao.insertEvent(cur);
+                        dao.insertEvent(cur, context);
                         eventIds.add(cur.getId().toString()); // gather event ids for batch insert into audit log
                         recordFutureNotificationFromTransaction(dao,
                                 cur.getEffectiveDate(),
@@ -395,7 +395,7 @@ public class EntitlementSqlDao implements EntitlementDao {
 
                 List<String> eventIds = new ArrayList<String>();
                 for (final EntitlementEvent cur : changeEvents) {
-                    dao.insertEvent(cur);
+                    dao.insertEvent(cur, context);
                     eventIds.add(cur.getId().toString()); // gather event ids for batch audit log insert
 
                     recordFutureNotificationFromTransaction(dao,
@@ -447,7 +447,7 @@ public class EntitlementSqlDao implements EntitlementDao {
         }
 
         if (futureEventId != null) {
-            dao.unactiveEvent(futureEventId.toString(), now);
+            dao.unactiveEvent(futureEventId.toString(), context);
 
             AuditSqlDao auditSqlDao = dao.become(AuditSqlDao.class);
             auditSqlDao.insertAuditFromTransaction(ENTITLEMENT_EVENTS_TABLE_NAME, futureEventId.toString(), ChangeType.UPDATE, context);
@@ -574,7 +574,7 @@ public class EntitlementSqlDao implements EntitlementDao {
 
                         SubscriptionData subData = curSubscription.getData();
                         for (final EntitlementEvent curEvent : curSubscription.getInitialEvents()) {
-                            transEventDao.insertEvent(curEvent);
+                            transEventDao.insertEvent(curEvent, context);
                             eventIds.add(curEvent.getId().toString()); // gather event ids for batch audit
 
                             recordFutureNotificationFromTransaction(transEventDao,
@@ -589,7 +589,7 @@ public class EntitlementSqlDao implements EntitlementDao {
                         transSubDao.insertSubscription(subData, context);
                         subscriptionIds.add(subData.getId().toString()); // gather subscription ids for batch audit
                     }
-                    transBundleDao.insertBundle(bundleData);
+                    transBundleDao.insertBundle(bundleData, context);
                     bundleIds.add(bundleData.getId().toString()); // gather bundle ids for batch audit
                 }
 
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/EventSqlDao.java b/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/EventSqlDao.java
index 610a7f8..0c2ba04 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/EventSqlDao.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/EventSqlDao.java
@@ -24,6 +24,8 @@ import com.ning.billing.entitlement.events.phase.PhaseEventBuilder;
 import com.ning.billing.entitlement.events.phase.PhaseEventData;
 import com.ning.billing.entitlement.events.user.*;
 import com.ning.billing.entitlement.exceptions.EntitlementError;
+import com.ning.billing.util.callcontext.CallContext;
+import com.ning.billing.util.callcontext.CallContextBinder;
 import com.ning.billing.util.dao.BinderBase;
 import com.ning.billing.util.dao.MapperBase;
 import org.joda.time.DateTime;
@@ -53,13 +55,16 @@ public interface EventSqlDao extends Transactional<EventSqlDao>, CloseMe, Transm
     public EntitlementEvent getEventById(@Bind("event_id") String eventId);
 
     @SqlUpdate
-    public void insertEvent(@Bind(binder = EventSqlDaoBinder.class) EntitlementEvent evt);
+    public void insertEvent(@Bind(binder = EventSqlDaoBinder.class) EntitlementEvent evt,
+                            @CallContextBinder final CallContext context);
 
     @SqlUpdate
-    public void unactiveEvent(@Bind("event_id")String eventId, @Bind("now") Date now);
+    public void unactiveEvent(@Bind("event_id")String eventId,
+                              @CallContextBinder final CallContext context);
 
     @SqlUpdate
-    public void reactiveEvent(@Bind("event_id")String eventId, @Bind("now") Date now);
+    public void reactiveEvent(@Bind("event_id")String eventId,
+                              @CallContextBinder final CallContext context);
 
     @SqlQuery
     @Mapper(EventSqlMapper.class)
@@ -75,8 +80,6 @@ public interface EventSqlDao extends Transactional<EventSqlDao>, CloseMe, Transm
             stmt.bind("event_id", evt.getId().toString());
             stmt.bind("event_type", evt.getType().toString());
             stmt.bind("user_type", (evt.getType() == EventType.API_USER) ? ((ApiEvent) evt).getEventType().toString() : null);
-            stmt.bind("created_dt", getDate(evt.getProcessedDate()));
-            stmt.bind("updated_dt", getDate(evt.getProcessedDate()));
             stmt.bind("requested_dt", getDate(evt.getRequestedDate()));
             stmt.bind("effective_dt", getDate(evt.getEffectiveDate()));
             stmt.bind("subscription_id", evt.getSubscriptionId().toString());
@@ -97,7 +100,7 @@ public interface EventSqlDao extends Transactional<EventSqlDao>, CloseMe, Transm
             UUID id = UUID.fromString(r.getString("event_id"));
             EventType eventType = EventType.valueOf(r.getString("event_type"));
             ApiEventType userType = (eventType == EventType.API_USER) ? ApiEventType.valueOf(r.getString("user_type")) : null;
-            DateTime createdDate = getDate(r, "created_dt");
+            DateTime createdDate = getDate(r, "created_date");
             DateTime requestedDate = getDate(r, "requested_dt");
             DateTime effectiveDate = getDate(r, "effective_dt");
             UUID subscriptionId = UUID.fromString(r.getString("subscription_id"));
diff --git a/entitlement/src/main/resources/com/ning/billing/entitlement/ddl.sql b/entitlement/src/main/resources/com/ning/billing/entitlement/ddl.sql
index c39d001..bef27aa 100644
--- a/entitlement/src/main/resources/com/ning/billing/entitlement/ddl.sql
+++ b/entitlement/src/main/resources/com/ning/billing/entitlement/ddl.sql
@@ -5,8 +5,6 @@ CREATE TABLE entitlement_events (
     event_id char(36) NOT NULL,
     event_type varchar(9) NOT NULL,
     user_type varchar(25) DEFAULT NULL,
-    created_dt datetime NOT NULL,
-    updated_dt datetime NOT NULL,
     requested_dt datetime NOT NULL,
     effective_dt datetime NOT NULL,
     subscription_id char(36) NOT NULL,
@@ -15,11 +13,14 @@ CREATE TABLE entitlement_events (
     plist_name varchar(64) DEFAULT NULL,
     current_version int(11) DEFAULT 1,
     is_active bool DEFAULT 1,
+    created_by varchar(50) NOT NULL,
+    created_date datetime NOT NULL,
+    updated_by varchar(50) NOT NULL,
+    updated_date datetime NOT NULL,
     PRIMARY KEY(id)
 ) ENGINE=innodb;
 CREATE INDEX idx_ent_1 ON entitlement_events(subscription_id,is_active,effective_dt);
-CREATE INDEX idx_ent_2 ON entitlement_events(subscription_id,effective_dt,created_dt,requested_dt,id);
-
+CREATE INDEX idx_ent_2 ON entitlement_events(subscription_id,effective_dt,created_date,requested_dt,id);
 
 DROP TABLE IF EXISTS subscriptions;
 CREATE TABLE subscriptions (
@@ -31,6 +32,10 @@ CREATE TABLE subscriptions (
     active_version int(11) DEFAULT 1,
     ctd_dt datetime DEFAULT NULL,
     ptd_dt datetime DEFAULT NULL,
+    created_by varchar(50) NOT NULL,
+    created_date datetime NOT NULL,
+    updated_by varchar(50) NOT NULL,
+    updated_date datetime NOT NULL,
     PRIMARY KEY(id)
 ) ENGINE=innodb;
 
diff --git a/entitlement/src/main/resources/com/ning/billing/entitlement/engine/dao/EventSqlDao.sql.stg b/entitlement/src/main/resources/com/ning/billing/entitlement/engine/dao/EventSqlDao.sql.stg
index 86ee538..9179943 100644
--- a/entitlement/src/main/resources/com/ning/billing/entitlement/engine/dao/EventSqlDao.sql.stg
+++ b/entitlement/src/main/resources/com/ning/billing/entitlement/engine/dao/EventSqlDao.sql.stg
@@ -1,21 +1,25 @@
 group EventSqlDao;
 
-getEventById(event_id) ::= <<
-  select
-      id
-      , event_id
-      , event_type
-      , user_type
-      , created_dt
-      , updated_dt
-      , requested_dt
-      , effective_dt
-      , subscription_id
-      , plan_name
-      , phase_name
-      , plist_name
-      , current_version
-      , is_active  
+fields(prefix) ::= <<
+    <prefix>event_id,
+    <prefix>event_type,
+    <prefix>user_type,
+    <prefix>requested_dt,
+    <prefix>effective_dt,
+    <prefix>subscription_id,
+    <prefix>plan_name,
+    <prefix>phase_name,
+    <prefix>plist_name,
+    <prefix>current_version,
+    <prefix>is_active,
+    <prefix>created_by,
+    <prefix>created_date,
+    <prefix>updated_by,
+    <prefix>updated_date
+>>
+
+getEventById() ::= <<
+  select id, <fields()>
   from entitlement_events
   where
       event_id = :event_id
@@ -23,26 +27,11 @@ getEventById(event_id) ::= <<
 >>
 
 insertEvent() ::= <<
-    insert into entitlement_events (
-      event_id
-      , event_type
-      , user_type
-      , created_dt
-      , updated_dt
-      , requested_dt
-      , effective_dt
-      , subscription_id
-      , plan_name
-      , phase_name
-      , plist_name
-      , current_version
-      , is_active
-    ) values (
+    insert into entitlement_events (<fields()>)
+    values (
       :event_id
       , :event_type
       , :user_type
-      , :created_dt
-      , :updated_dt
       , :requested_dt
       , :effective_dt
       , :subscription_id
@@ -51,45 +40,37 @@ insertEvent() ::= <<
       , :plist_name
       , :current_version
       , :is_active
+      , :userName
+      , :createdDate
+      , :userName
+      , :updatedDate
     );   
 >>
 
-unactiveEvent(event_id, now) ::= <<
+unactiveEvent() ::= <<
     update entitlement_events
     set
       is_active = 0
-      , updated_dt = :now
+      , updated_by = :userName
+      , updated_date = :updatedDate
     where
       event_id = :event_id
     ;
 >>
 
-reactiveEvent(event_id, now) ::= <<
+reactiveEvent() ::= <<
     update entitlement_events
     set
       is_active = 1
-      , updated_dt = :now
+      , updated_by = :userName
+      , updated_date = :updatedDate
     where
       event_id = :event_id
     ;
 >>
 
-getFutureActiveEventForSubscription(subscription_id, now) ::= <<
-    select 
-      id
-      , event_id
-      , event_type
-      , user_type
-      , created_dt
-      , updated_dt
-      , requested_dt
-      , effective_dt
-      , subscription_id
-      , plan_name
-      , phase_name
-      , plist_name
-      , current_version
-      , is_active
+getFutureActiveEventForSubscription() ::= <<
+    select id, <fields()>
     from entitlement_events
     where
       subscription_id = :subscription_id
@@ -97,34 +78,20 @@ getFutureActiveEventForSubscription(subscription_id, now) ::= <<
       and effective_dt > :now
     order by
       effective_dt asc
-      , created_dt asc
+      , created_date asc
       , requested_dt asc
       , id asc
     ;
 >> 
 
 getEventsForSubscription(subscription_id) ::= <<
-    select
-       id
-      , event_id
-      , event_type
-      , user_type
-      , created_dt
-      , updated_dt
-      , requested_dt
-      , effective_dt
-      , subscription_id
-      , plan_name
-      , phase_name
-      , plist_name
-      , current_version
-      , is_active
+    select id, <fields()>
     from entitlement_events
     where
       subscription_id = :subscription_id
     order by
       effective_dt asc
-      , created_dt asc
+      , created_date asc
       , requested_dt asc
       , id asc
     ;      
diff --git a/entitlement/src/main/resources/com/ning/billing/entitlement/engine/dao/SubscriptionSqlDao.sql.stg b/entitlement/src/main/resources/com/ning/billing/entitlement/engine/dao/SubscriptionSqlDao.sql.stg
index 094bdf1..780c06a 100644
--- a/entitlement/src/main/resources/com/ning/billing/entitlement/engine/dao/SubscriptionSqlDao.sql.stg
+++ b/entitlement/src/main/resources/com/ning/billing/entitlement/engine/dao/SubscriptionSqlDao.sql.stg
@@ -10,6 +10,10 @@ insertSubscription() ::= <<
       , active_version
       , ctd_dt
       , ptd_dt
+      , created_by
+      , created_date
+      , updated_by
+      , updated_date
     ) values (
         :id
       , :bundle_id
@@ -18,7 +22,11 @@ insertSubscription() ::= <<
       , :bundle_start_dt
       , :active_version
       , :ctd_dt
-      , :ptd_dt 
+      , :ptd_dt
+      , :userName
+      , :createdDate
+      , :userName
+      , :updatedDate
     );
 >>
 
@@ -58,6 +66,8 @@ updateSubscription(id, active_version, ctd_dt, ptd_dt) ::= <<
       active_version = :active_version
       , ctd_dt = :ctd_dt
       , ptd_dt = :ptd_dt
+      , updated_by = :userName
+      , updated_date = :updatedDate
     where id = :id
     ;
 >>
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/api/TestApiBase.java b/entitlement/src/test/java/com/ning/billing/entitlement/api/TestApiBase.java
index c7728aa..8379269 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/api/TestApiBase.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/api/TestApiBase.java
@@ -190,10 +190,13 @@ public abstract class TestApiBase {
 
         log.warn("RESET TEST FRAMEWORK\n\n");
 
-        testListener.reset();
+        if (testListener != null) {
+            testListener.reset();
+        }
 
         clock.resetDeltaFromReality();
         ((MockEntitlementDao) dao).reset();
+
         try {
             busService.getBus().register(testListener);
             UUID accountId = UUID.randomUUID();

invoice/pom.xml 10(+9 -1)

diff --git a/invoice/pom.xml b/invoice/pom.xml
index ccef93e..6a1f7dd 100644
--- a/invoice/pom.xml
+++ b/invoice/pom.xml
@@ -13,7 +13,7 @@
     <parent>
         <groupId>com.ning.billing</groupId>
         <artifactId>killbill</artifactId>
-        <version>0.1.8-SNAPSHOT</version>
+        <version>0.1.9</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
     <artifactId>killbill-invoice</artifactId>
@@ -39,13 +39,21 @@
             <type>test-jar</type>
             <scope>test</scope>
         </dependency>
+            <dependency>
+            <groupId>com.ning.billing</groupId>
+            <artifactId>killbill-entitlement</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>com.ning.billing</groupId>
             <artifactId>killbill-entitlement</artifactId>
+            <type>test-jar</type>
+            <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>com.ning.billing</groupId>
             <artifactId>killbill-catalog</artifactId>
+            <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>com.ning.billing</groupId>
diff --git a/invoice/src/main/java/com/ning/billing/invoice/model/InvoicingConfiguration.java b/invoice/src/main/java/com/ning/billing/invoice/model/InvoicingConfiguration.java
index 554dc62..7741f00 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/model/InvoicingConfiguration.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/model/InvoicingConfiguration.java
@@ -20,7 +20,7 @@ import java.math.BigDecimal;
 
 public class InvoicingConfiguration {
     private final static int roundingMethod = BigDecimal.ROUND_HALF_UP;
-    private final static int numberOfDecimals = 4;
+    private final static int numberOfDecimals = 2;
 
     public static int getRoundingMode() {
         return roundingMethod;

payment/pom.xml 2(+1 -1)

diff --git a/payment/pom.xml b/payment/pom.xml
index fc660f7..2fd9dab 100644
--- a/payment/pom.xml
+++ b/payment/pom.xml
@@ -13,7 +13,7 @@
     <parent>
         <groupId>com.ning.billing</groupId>
         <artifactId>killbill</artifactId>
-        <version>0.1.8-SNAPSHOT</version>
+        <version>0.1.9</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
     <artifactId>killbill-payment</artifactId>

pom.xml 2(+1 -1)

diff --git a/pom.xml b/pom.xml
index f8bc4c2..936a439 100644
--- a/pom.xml
+++ b/pom.xml
@@ -18,7 +18,7 @@
     <groupId>com.ning.billing</groupId>
     <artifactId>killbill</artifactId>
     <packaging>pom</packaging>
-    <version>0.1.8-SNAPSHOT</version>
+    <version>0.1.9</version>
     <name>killbill</name>
     <description>Library for managing recurring subscriptions and the associated billing</description>
     <url>http://github.com/ning/killbill</url>

util/pom.xml 2(+1 -1)

diff --git a/util/pom.xml b/util/pom.xml
index dc5c251..6d62608 100644
--- a/util/pom.xml
+++ b/util/pom.xml
@@ -14,7 +14,7 @@
     <parent>
         <groupId>com.ning.billing</groupId>
         <artifactId>killbill</artifactId>
-        <version>0.1.8-SNAPSHOT</version>
+        <version>0.1.9</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
     <artifactId>killbill-util</artifactId>