killbill-memoizeit

Details

diff --git a/analytics/src/main/java/com/ning/billing/analytics/AnalyticsListener.java b/analytics/src/main/java/com/ning/billing/analytics/AnalyticsListener.java
index 6ca7414..f07627a 100644
--- a/analytics/src/main/java/com/ning/billing/analytics/AnalyticsListener.java
+++ b/analytics/src/main/java/com/ning/billing/analytics/AnalyticsListener.java
@@ -40,16 +40,14 @@ public class AnalyticsListener
     private final BusinessSubscriptionTransitionDao dao;
     private final IEntitlementUserApi entitlementApi;
     private final IAccountUserApi accountApi;
-    private final IEventBus eventBus;
     private final BusinessSubscriptionTransitionRecorder bstRecorder;
 
     @Inject
-    public AnalyticsListener(final BusinessSubscriptionTransitionDao dao, final IEntitlementUserApi entitlementApi, final IAccountUserApi accountApi, final IEventBus eventBus)
+    public AnalyticsListener(final BusinessSubscriptionTransitionDao dao, final IEntitlementUserApi entitlementApi, final IAccountUserApi accountApi)
     {
         this.dao = dao;
         this.entitlementApi = entitlementApi;
         this.accountApi = accountApi;
-        this.eventBus = eventBus;
         this.bstRecorder = new BusinessSubscriptionTransitionRecorder(dao);
     }
 
@@ -82,17 +80,6 @@ public class AnalyticsListener
         }
     }
 
-    @LyfecycleHandlerType(LyfecycleHandlerType.LyfecycleLevel.REGISTER_EVENTS)
-    public void registerForNotifications()
-    {
-        try {
-            eventBus.register(this);
-        }
-        catch (IEventBus.EventBusException e) {
-            log.error("Unable to register to the EventBus!", e);
-        }
-    }
-
     private void subscriptionCreated(final ISubscriptionTransition created)
     {
         final BusinessSubscriptionEvent event = BusinessSubscriptionEvent.subscriptionCreated(created.getNextPlan());
diff --git a/analytics/src/main/java/com/ning/billing/analytics/api/AnalyticsService.java b/analytics/src/main/java/com/ning/billing/analytics/api/AnalyticsService.java
new file mode 100644
index 0000000..b9d989f
--- /dev/null
+++ b/analytics/src/main/java/com/ning/billing/analytics/api/AnalyticsService.java
@@ -0,0 +1,55 @@
+/*
+ * 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.analytics.api;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.inject.Inject;
+import com.ning.billing.analytics.AnalyticsListener;
+import com.ning.billing.lifecycle.LyfecycleHandlerType;
+import com.ning.billing.util.eventbus.IEventBus;
+
+public class AnalyticsService implements IAnalyticsService {
+
+    private static final Logger log = LoggerFactory.getLogger(AnalyticsService.class);
+
+    private static final String ANALYTICS_SERVICE = "analytics-service";
+
+    private final AnalyticsListener listener;
+    private final IEventBus eventBus;
+
+    @Inject
+    public AnalyticsService(AnalyticsListener listener, IEventBus eventBus) {
+        this.listener = listener;
+        this.eventBus = eventBus;
+    }
+
+    @Override
+    public String getName() {
+        return ANALYTICS_SERVICE;
+    }
+
+    @LyfecycleHandlerType(LyfecycleHandlerType.LyfecycleLevel.REGISTER_EVENTS)
+    public void registerForNotifications() {
+        try {
+            eventBus.register(listener);
+        } catch (IEventBus.EventBusException e) {
+            log.error("Unable to register to the EventBus!", e);
+        }
+    }
+}
diff --git a/analytics/src/main/java/com/ning/billing/analytics/setup/AnalyticsModule.java b/analytics/src/main/java/com/ning/billing/analytics/setup/AnalyticsModule.java
index 62a0ed5..11bc356 100644
--- a/analytics/src/main/java/com/ning/billing/analytics/setup/AnalyticsModule.java
+++ b/analytics/src/main/java/com/ning/billing/analytics/setup/AnalyticsModule.java
@@ -19,6 +19,8 @@ package com.ning.billing.analytics.setup;
 
 import com.google.inject.AbstractModule;
 import com.ning.billing.analytics.AnalyticsListener;
+import com.ning.billing.analytics.api.AnalyticsService;
+import com.ning.billing.analytics.api.IAnalyticsService;
 import com.ning.billing.analytics.dao.BusinessAccountDao;
 import com.ning.billing.analytics.dao.BusinessAccountDaoProvider;
 import com.ning.billing.analytics.dao.BusinessSubscriptionTransitionDao;
@@ -32,6 +34,6 @@ public class AnalyticsModule extends AbstractModule
         bind(BusinessSubscriptionTransitionDao.class).toProvider(BusinessSubscriptionTransitionDaoProvider.class).asEagerSingleton();
         bind(BusinessAccountDao.class).toProvider(BusinessAccountDaoProvider.class).asEagerSingleton();
         bind(AnalyticsListener.class).asEagerSingleton();
-        bind(IAnalyticsService.class).asEagerSingleton();
+        bind(IAnalyticsService.class).to(AnalyticsService.class).asEagerSingleton();
     }
 }