killbill-memoizeit

util: add logging around Ehcache state transitions This

9/28/2017 6:28:50 AM

Details

diff --git a/util/src/main/java/org/killbill/billing/util/glue/Eh107CacheManagerProvider.java b/util/src/main/java/org/killbill/billing/util/glue/Eh107CacheManagerProvider.java
index 005afa3..95677b2 100644
--- a/util/src/main/java/org/killbill/billing/util/glue/Eh107CacheManagerProvider.java
+++ b/util/src/main/java/org/killbill/billing/util/glue/Eh107CacheManagerProvider.java
@@ -27,6 +27,7 @@ import javax.cache.spi.CachingProvider;
 import javax.inject.Inject;
 import javax.inject.Provider;
 
+import org.ehcache.core.spi.store.InternalCacheManager;
 import org.killbill.billing.util.cache.BaseCacheLoader;
 import org.killbill.billing.util.config.definition.EhCacheConfig;
 import org.slf4j.Logger;
@@ -65,6 +66,8 @@ public class Eh107CacheManagerProvider extends CacheProviderBase implements Prov
             cacheManager = cachingProvider.getCacheManager();
         }
 
+        cacheManager.unwrap(InternalCacheManager.class).registerListener(new EhcacheLoggingListener());
+
         for (final BaseCacheLoader<?, ?> cacheLoader : cacheLoaders) {
             createCache(cacheManager,
                         cacheLoader.getCacheType().getCacheName(),
diff --git a/util/src/main/java/org/killbill/billing/util/glue/EhcacheLoggingListener.java b/util/src/main/java/org/killbill/billing/util/glue/EhcacheLoggingListener.java
new file mode 100644
index 0000000..721072e
--- /dev/null
+++ b/util/src/main/java/org/killbill/billing/util/glue/EhcacheLoggingListener.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2014-2017 Groupon, Inc
+ * Copyright 2014-2017 The Billing Project, LLC
+ *
+ * The Billing Project 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 org.killbill.billing.util.glue;
+
+import org.ehcache.Cache;
+import org.ehcache.Status;
+import org.ehcache.core.events.CacheManagerListener;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class EhcacheLoggingListener implements CacheManagerListener {
+
+    private static final Logger logger = LoggerFactory.getLogger(EhcacheLoggingListener.class);
+
+    @Override
+    public void cacheAdded(final String alias, final Cache<?, ?> cache) {
+        logger.info("Added Ehcache '{}'", alias);
+    }
+
+    @Override
+    public void cacheRemoved(final String alias, final Cache<?, ?> cache) {
+        logger.info("Removed Ehcache '{}'", alias);
+    }
+
+    @Override
+    public void stateTransition(final Status from, final Status to) {
+        logger.info("Transitioning Ehcache from '{}' to '{}'", from, to);
+    }
+}